加入压缩处理,使用python的zipfile模块
参考:
在python中,MIME的这些对象的继承关系如下。
-MIMEBase
- |– MIMENonMultipart
- |– MIMEApplication
- |– MIMEAudio
- |– MIMEImage
- |– MIMEMessage
- |– MIMEText
- |– MIMEMultipart
一般来说,不会用到MIMEBase,而是直接使用它的继承类。MIMEMultipart有attach方法,而MIMENonMultipart没有,只能被attach。
#!/usr/bin/env python
#coding:utf-8
import zipfile
import os
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
if __name__=="__main__":
path = 'D:/Program Files/Python/TS/test.gif'
filename = os.path.basename(path)
filepath = os.path.dirname(path)
if os.path.getsize(path)>1*1024*1024:
zipFileName = filename.split('.')[0]+'.zip'
if not os.path.exists(zipFileName):
zipPath = os.path.join(filepath,zipFileName)
print zipPath
f=zipfile.ZipFile(zipPath,'w',zipfile.ZIP_DEFLATED)
f.write(os.path.join(path),filename)#注意后面一个参数只写文件名,如果加上路径。压缩后,会带上相应的文件路径。
_user = "***@163.com"
_pwd = "***"
_to = "***@163.com"
#可以添加多种类型的附件
msg = MIMEMultipart()
msg["Subject"] = "Python Email Test"
msg["From"] = _user
msg["To"] = _to
#可以添加文字
part = MIMEText("Text Area")
msg.attach(part)
#可以添加html元素
htmlText = '<p>'
part = MIMEText(htmlText,'html','utf-8')
msg.attach(part)
#---这是附件部分---
#zip类型附件,MIMEApplication不管什么类型都可以用
part = MIMEApplication(open(zipPath,'rb').read())
part.add_header('Content-Disposition', 'attachment', filename=zipFileName)
msg.attach(part)
s = smtplib.SMTP("smtp.163.com", timeout=30)#连接smtp邮件服务器
s.login(_user, _pwd)#登陆服务器
s.sendmail(_user, _to, msg.as_string())#发送邮件
s.close()