天天看点

python 发送邮件实例

文件形式的邮件

#!/usr/bin/env python3  

#coding: utf-8  

import smtplib  

from email.mime.text import MIMEText  

from email.header import Header  

sender = '***'  

receiver = '***'  

subject = 'python email test'  

smtpserver = 'smtp.163.com'  

username = '***'  

password = '***'  

msg = MIMEText('你好','text','utf-8')#中文需参数‘utf-8’,单字节字符不需要  

msg['Subject'] = Header(subject, 'utf-8')  

smtp = smtplib.SMTP()  

smtp.connect('smtp.163.com')  

smtp.login(username, password)  

smtp.sendmail(sender, receiver, msg.as_string())  

smtp.quit()  

HTML形式的邮件

msg = MIMEText('<html><h1>你好</h1></html>','html','utf-8')  

msg['Subject'] = subject  

带图片的HTML邮件

from email.mime.multipart import MIMEMultipart  

from email.mime.image import MIMEImage  

msgRoot = MIMEMultipart('related')  

msgRoot['Subject'] = 'test message'  

msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>good!','html','utf-8')  

msgRoot.attach(msgText)  

fp = open('h:\\python\\1.jpg', 'rb')  

msgImage = MIMEImage(fp.read())  

fp.close()  

msgImage.add_header('Content-ID', '<image1>')  

msgRoot.attach(msgImage)  

smtp.sendmail(sender, receiver, msgRoot.as_string())  

带附件的邮件

#构造附件  

att = MIMEText(open('h:\\python\\1.jpg', 'rb').read(), 'base64', 'utf-8')  

att["Content-Type"] = 'application/octet-stream'  

att["Content-Disposition"] = 'attachment; filename="1.jpg"'  

msgRoot.attach(att)  

群邮件

receiver = ['***','****',……]  

msg = MIMEText('你好','text','utf-8')  

各种元素都包含的邮件

# Create message container - the correct MIME type is multipart/alternative.  

msg = MIMEMultipart('alternative')  

msg['Subject'] = "Link"  

# Create the body of the message (a plain-text and an HTML version).  

text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"  

html = """\ 

<html> 

  <head></head> 

  <body> 

    <p>Hi!<br> 

       How are you?<br> 

       Here is the <a href="http://www.python.org">link</a> you wanted. 

    </p> 

  </body> 

</html> 

"""  

# Record the MIME types of both parts - text/plain and text/html.  

part1 = MIMEText(text, 'plain')  

part2 = MIMEText(html, 'html')  

# Attach parts into message container.  

# According to RFC 2046, the last part of a multipart message, in this case  

# the HTML message, is best and preferred.  

msg.attach(part1)  

msg.attach(part2)  

msg.attach(att)  

基于SSL的邮件

smtp.ehlo()  

smtp.starttls()  

smtp.set_debuglevel(1)