Selenium+python自动化22-发送各种类型附件邮件

前言

最近一些小伙伴,在搞邮箱的事情,小编于是去折腾了一下!总结了一些干货,与大家分享一下!速来,抱大腿,我要开车了!

基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。
在python中,MIME的这些对象的继承关系如下。
MIMEBase
   |-- MIMENonMultipart
       |-- MIMEApplication
       |-- MIMEAudio
       |-- MIMEImage
       |-- MIMEMessage
       |-- MIMEText
   |-- MIMEMultipart
一般来说,不会用到MIMEBase,而是直接使用它的继承类。MIMEMultipart有attach方法,而MIMENonMultipart没有,只能被attach。
MIME有很多种类型,这个略麻烦,如果附件是图片格式,我要用MIMEImage,如果是音频,要用MIMEAudio,如果是word、excel,我都不知道该用哪种MIME类型了,得上google去查。
最懒的方法就是,不管什么类型的附件,都用MIMEApplication,MIMEApplication默认子类型是application/octet-stream。
application/octet-stream表明“这是个二进制的文件,希望你们那边知道怎么处理”,然后客户端,比如qq邮箱,收到这个声明后,会根据文件扩展名来猜测。
废话不多说,上代码:
#coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
_user = "9759***[email protected]"
_pwd  = "vaz*****yzabebf"  #服务器授权码
_to   = "224***[email protected]"
msg = MIMEMultipart()
msg["Subject"] = "测试一下"  #邮件标题
msg["From"]    = _user
msg["To"]      = _to

文字部分

part = MIMEText("你好")
msg.attach(part)

附件部分

xlsx类型附件

part = MIMEApplication(open('D:\Tyrone.xlsx','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="Tyrone.xlsx")   #这边的filename随便写,完全看你心情,但是后缀的格式一定要统一
msg.attach(part)

jpg类型附件(png类型和jpg一样)

part = MIMEApplication(open('D:\Tyrone.jpg','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="Tyrone.jpg")
msg.attach(part)

pdf类型附件

part = MIMEApplication(open('D:\Tyrone.pdf','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="Tyrone.pdf")
msg.attach(part)

mp3类型附件

part = MIMEApplication(open('D:\Tyrone.mp3','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="Tyrone.mp3")
msg.attach(part)

try:
   s = smtplib.SMTP_SSL("smtp.qq.com", 465)   #发件邮箱的服务器以及端口
   s.login(_user, _pwd)
   s.sendmail(user, _to, msg.asstring())
   s.quit()
   print "完美!"
except smtplib.SMTPException,e:
   print "失败!"

猜你喜欢

转载自www.cnblogs.com/jason89/p/9028154.html