如何使用Python发送带附件的邮件
2005-12-13 12:30
1096 查看
1、首先要理解一个常识(RFC)
RFC(The Request for Comments)是一个关于Internet各种标准的文档,定义了很多的网络协议和数据格式,标准的Internet邮件遵从RFC2822(Internet Message Format)等几个文档,其中RFC822中描述了邮件头(mail headers)的格式。具体文档在Python帮助里都可以查到全文。
2、其次要熟悉Python的几个模块
关于邮件的有email,smtplib等,关于编码的有base64,binascii等,发送邮件的方式就是先根据RFC构造好邮件的各个部分,然后登录到smtp服务器sendmail就可以了。
3、下面贴代码
1# -*- coding: cp936 -*-
2
3from email.Header import Header
4from email.MIMEText import MIMEText
5from email.MIMEMultipart import MIMEMultipart
6import smtplib, datetime
7
8#创建一个带附件的实例
9msg = MIMEMultipart()
10
11#构造附件
12att = MIMEText(open('d:\\tc201.rar', 'rb').read(), 'base64', 'gb2312')
13att["Content-Type"] = 'application/octet-stream'
14att["Content-Disposition"] = 'attachment; filename="tc201.rar"'
15msg.attach(att)
16
17#加邮件头
18msg['to'] = 'zhousl@xxx.com'
19msg['from'] = 'zhousl@xxx.com'
20msg['subject'] = Header('冒烟测试结果 (' + str(datetime.date.today()) + ')', \
21 'gb2312')
22#发送邮件
23server = smtplib.SMTP('smtp.xxx.com')
24server.sendmail(msg['from'], msg['to'], \
25 msg.as_string())
26server.close
4、几个值得注意的地方
1)构造附件时注意采用正确的字符集,这个困惑我好久,开始没有用gb2312,发过去的压缩文件就是坏的;
2)上面的代码中没有包括登录smtp服务器的指令,而Internet上面的smtp服务器一般都是要求认证的,可以通过smtp.login方法进行登陆
3)sendmail方法中的参数to可以是包含多个地址的元组,这样可以发送邮件给多个人了
4)Python2.4以前的版本是不支持gb2312字符集的,要下载安装Python2.4才能跑上面的代码,当然2.4.1肯定会更好一点
RFC(The Request for Comments)是一个关于Internet各种标准的文档,定义了很多的网络协议和数据格式,标准的Internet邮件遵从RFC2822(Internet Message Format)等几个文档,其中RFC822中描述了邮件头(mail headers)的格式。具体文档在Python帮助里都可以查到全文。
2、其次要熟悉Python的几个模块
关于邮件的有email,smtplib等,关于编码的有base64,binascii等,发送邮件的方式就是先根据RFC构造好邮件的各个部分,然后登录到smtp服务器sendmail就可以了。
3、下面贴代码
1# -*- coding: cp936 -*-
2
3from email.Header import Header
4from email.MIMEText import MIMEText
5from email.MIMEMultipart import MIMEMultipart
6import smtplib, datetime
7
8#创建一个带附件的实例
9msg = MIMEMultipart()
10
11#构造附件
12att = MIMEText(open('d:\\tc201.rar', 'rb').read(), 'base64', 'gb2312')
13att["Content-Type"] = 'application/octet-stream'
14att["Content-Disposition"] = 'attachment; filename="tc201.rar"'
15msg.attach(att)
16
17#加邮件头
18msg['to'] = 'zhousl@xxx.com'
19msg['from'] = 'zhousl@xxx.com'
20msg['subject'] = Header('冒烟测试结果 (' + str(datetime.date.today()) + ')', \
21 'gb2312')
22#发送邮件
23server = smtplib.SMTP('smtp.xxx.com')
24server.sendmail(msg['from'], msg['to'], \
25 msg.as_string())
26server.close
4、几个值得注意的地方
1)构造附件时注意采用正确的字符集,这个困惑我好久,开始没有用gb2312,发过去的压缩文件就是坏的;
2)上面的代码中没有包括登录smtp服务器的指令,而Internet上面的smtp服务器一般都是要求认证的,可以通过smtp.login方法进行登陆
3)sendmail方法中的参数to可以是包含多个地址的元组,这样可以发送邮件给多个人了
4)Python2.4以前的版本是不支持gb2312字符集的,要下载安装Python2.4才能跑上面的代码,当然2.4.1肯定会更好一点
相关文章推荐
- 如何使用Python发送带(附件)的邮件
- 如何使用Python发送带附件的邮件
- 使用Python发送邮件附件以定时备份MySQL的教程
- 如何使用Java来调用Notes API发送邮件(包括附件)
- 如何使用 Cdosys.dll 库使用 Visual C# 中发送电子邮件带有附件接收邮件
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- Python3使用SMTP发送带附件邮件
- python - 如何通过GMail发送邮件:smtplib的使用
- python使用MIMEMultipart发送多个附件的邮件
- python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件
- 如何使用 Cdosys.dll 库使用 Visual C# 中发送电子邮件带有附件接收邮件
- 使用python发送带附件的邮件
- 使用python发送带附件的邮件(转)
- 使用Python发送带附件的邮件
- 使用python smtplib 发送带附件的邮件
- 如何使用Python发送邮件
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- python - 如何通过GMail发送邮件:smtplib的使用
- Python使用SMTP发送邮件[HTML格式、送带附件]
- 如何使用 Cdosys.dll 库使用ASP发送邮件带附件