用Python发送邮件
来源:互联网 发布:c语言sum是什么意思 编辑:程序博客网 时间:2024/04/30 22:24
转自:http://www.berlinix.com/python/email.php
用Python发送邮件
用Python发送邮件需要引入SMTP(smtplib.SMTP)包,如果要发送复杂邮件,可以用email包。
smtplib
smtplib包中的核心类:smtplib.SMTP、smtplib.SMTP_SSL等。构造SMTP:
SMTP(host = "", port = 0, local_hostname = None [, timeout])SMTP_SSL(host = "", port = 0, local_hostname = None, keyfile = None, certfile = None [, timeout])
发送邮件:
SMTP.sendmail(from_addr, to_addrs, msg, mail_opts = [], rctp_opts = [])SMTP.send_message(msg, from_addr = None, to_addrs = None, mail_opts = [], rcpt_opts = [])
参数中的msg是Message对象(email.message.Message)。
email包
Message类是email包的核心,它位于email.message模块。email包提供了多种不同类型的MIME对象,它们分别是:
- email.mime.base.MIMEBase
- email.mime.nonmultipart.MIMENonMultipart
- email.mime.multipart.MIMEMultipart
- email.mime.application.MIMEApplication
- email.mime.audio.MIMEAudio
- email.mime.image.MIMEImage
- email.mime.message.MIMEMessage
- email.mime.text.MIMEText
这些对象的继承关系如下:
MIMEBase |-- MIMENonMultipart |-- MIMEApplication |-- MIMEAudio |-- MIMEImage |-- MIMEMessage |-- MIMEText |-- MIMEMultipart
最基础的MIMEBase则继承自Message。通常而言无需直接使用MIMEBase,而应该使用这些继承类。MIMENonMultipart是中间层,它的主要作用就是阻止attach()的使用。要使用attach(),则应该用MIMEMultipart。再看这些类的构造函数:
MIMEBase(_maintype, _subtype, **_params)MIMEMultipart(_subtype = "mixed", boundary = None, _subparts = None, **_params)MIMEApplication(_data, _subtype = "octet-stream", _encoder = encode_base64, **_params)MIMEAudio(_audiodata, _subtype = None, _encoder = encode_base64, **_params)MIMEAudio(_imagedata, _subtype = None, _encoder = encode_base64, **_params)MIMEMessage(_msg, _subtype = "rfc822")MIMEText(_text, _subtype = "plain", _charset = "us-ascii")
Python发送邮件实战
首先发送一份简单邮件:
import smtplibif __name__ == "__main__": host = "smtp.gmail.com" port = 465 user = "SENDER@gmail.com" pwd = "MYPASSWD" s = smtplib.SMTP_SSL(host, port); s.login(user, pwd) s.sendmail(user, "RECEIVER@gmail.com", "hello, berlinix!")
查看邮箱,收到一封没有title的邮件,内容是hello, berlinix!
接下来为邮件添加title,并丰富下邮件内容,这次我们用HTML格式作为邮件内容。
import smtplibfrom email.mime.text import MIMETextif __name__ == "__main__": host = "smtp.gmail.com" port = 465 sender = "SENDER@gmail.com" pwd = "MYPASSWD" receiver = "RECEIVER@gmail.com" body = "<h1>Welecome to Berlinix.com</h1>" body += "<p>Here is my personal blog, include some technical notes.</p>" msg = MIMEText(body, "html") msg["subject"] = "Welcome to Berlinix.com" msg["from"] = sender msg["to"] = receiver s = smtplib.SMTP_SSL(host, port); s.set_debuglevel(1) s.login(sender, pwd) s.sendmail(sender, receiver, msg.as_string())
接下来,在邮件中内嵌一个图片并发送:
import smtplibfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagefrom email.mime.multipart import MIMEMultipartif __name__ == "__main__": host = "smtp.gmail.com" port = 465 sender = "SENDER@gmail.com" pwd = "MYPASSWD" receiver = "RECEIVER@gmail.com" body = "<h1>Welecome to Berlinix.com</h1>" body += "<p>Here is my personal blog, include some technical notes.</p>" body += "<p><img src='cid:pylogo' />Python Programming Language</p>" msg_root = MIMEMultipart("related") msg_root["subject"] = "Welcome to Berlinix.com"; msg_root["from"] = sender msg_root["to"] = receiver msg_html = MIMEText(body, "html") msg_root.attach(msg_html) imgfp = open("python-logo.gif", "rb") msg_img = MIMEImage(imgfp.read()) msg_img.add_header("Content-ID", "") msg_img.add_header("Content-Disposition", "inline", filename="python-logo.gif") msg_root.attach(msg_img) s = smtplib.SMTP_SSL(host, port); s.set_debuglevel(1) s.login(sender, pwd) s.sendmail(sender, receiver, msg_root.as_string())
这段代码使用了MIMEMultipart,并且创建了2个MIME对象msg_html和msg_img,并将他们attach()上msg_root。以上注意嵌入图片的使用:<img src="cid:pylogo.gif">。如果我们只为邮件添加附件,而不是嵌入图片,代码将会是这样:
msg_attch = MIMEImage(open("python-logo.gif", "rb").read())msg_attch.add_header("Content-Disposition", "attachment", filename="python-big.gif")msg_root.attach(msg_attch)
0 0
- 用Python发送邮件
- 用Python发送邮件
- 用Python发送邮件
- 用Python发送邮件
- 用python发送邮件
- 用Python来发送邮件
- 用python发送邮件 smtp
- 用Python实现SMTP邮件发送
- Python 发送邮件
- python 邮件发送
- 使用PYTHON发送邮件
- python邮件发送
- python发送邮件程序
- python: 发送邮件
- python发送邮件
- python smtp发送邮件
- python 发送邮件实例
- python发送各类邮件
- Oracle关于控制文件的错误ORA-00202的处理
- MiKTeX与Texmaker 配置使用
- android的listview中setselection()不起作用的解决方案
- 跳跃表的实现
- Lucene:基于Java的全文检索引擎的简介
- 用Python发送邮件
- js中的History +
- J2EE基础总结(4)——JSP
- openwrt 修改flash中mac地址信息的基本方法
- wireshark 小技巧
- GetObject 函数的使用
- 如何使用java synchronized进行线程同步
- ASP.NET 4.0的ID,ClientID,UniqueID及ClientIDMode属性篇
- Source Insight支持UTF-8插件安装说明