引用:http://blog.csdn.net/wyuan8913/article/details/6917873
环境:windows ,python3.2.2
文件形式的邮件
[python] view plaincopy
- #!/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('你好','plain','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形式的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
- msg = MIMEText('<html><h1>你好</h1></html>','html','utf-8')
- msg['Subject'] = subject
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
带图片的HTML邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
- 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 = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msgRoot.as_string())
- smtp.quit()
带附件的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
- msgRoot = MIMEMultipart('related')
- msgRoot['Subject'] = 'test message'
- #构造附件
- 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)
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msgRoot.as_string())
- smtp.quit()
群邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
- sender = '***'
- receiver = ['***','****',……]
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
- msg = MIMEText('你好','plain','utf-8')
- msg['Subject'] = subject
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
各种元素都包含的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
- # 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)
- #构造附件
- 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"'
- msg.attach(att)
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
基于SSL的邮件
[python] view plaincopy
- #!/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('你好','plain','utf-8')#中文需参数‘utf-8’,单字节字符不需要
- msg['Subject'] = Header(subject, 'utf-8')
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.ehlo()
- smtp.starttls()
- smtp.ehlo()
- smtp.set_debuglevel(1)
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()