如何使用Python发送带附件的邮件

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
3 from email.Header import Header
4 from email.MIMEText import MIMEText
5 from email.MIMEMultipart import MIMEMultipart
6 import smtplib, datetime
7
8 # 创建一个带附件的实例
9 msg = MIMEMultipart()
10
11 # 构造附件
12 att = MIMEText(open( ' d:\\tc201.rar ' , ' rb ' ).read(), ' base64 ' , ' gb2312 ' )
13 att[ " Content-Type " ] = ' application/octet-stream '
14 att[ " Content-Disposition " ] = ' attachment; filename="tc201.rar" '
15 msg.attach(att)
16
17 # 加邮件头
18 msg[ ' to ' ] = ' zhousl@xxx.com'
19 msg[ ' from ' ] = ' zhousl@xxx.com'
20 msg[ ' subject ' ] = Header( ' 冒烟测试结果 ( ' + str(datetime.date.today()) + ' ) ' , \
21                         ' gb2312 ' )
22 # 发送邮件
23 server = smtplib.SMTP( 'smtp .xxx.com' )
24 server.sendmail(msg[ ' from ' ], msg[ ' to ' ], \
25                 msg.as_string())
26 server.close
4、几个值得注意的地方
1)构造附件时注意采用正确的字符集,这个困惑我好久,开始没有用gb2312,发过去的压缩文件就是坏的;
2)上面的代码中没有包括登录smtp服务器的指令,而Internet上面的smtp服务器一般都是要求认证的,可以通过smtp.login方法进行登陆
3)sendmail方法中的参数to可以是包含多个地址的元组,这样可以发送邮件给多个人了
4)Python2.4以前的版本是不支持gb2312字符集的,要下载安装Python2.4才能跑上面的代码,当然2.4.1肯定会更好一点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值