前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium+python自动化22-发送各种类型附件邮件

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

作者头像
上海-悠悠
发布2018-04-08 15:09:09
6310
发布2018-04-08 15:09:09
举报

前言

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

基本思路就是,使用MIMEMultipart来标示这个邮件是多个部分组成的,然后attach各个部分。如果是附件,则add_header加入附件的声明。 在python中,MIME的这些对象的继承关系如下。

代码语言:javascript
复制
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邮箱,收到这个声明后,会根据文件扩展名来猜测。 废话不多说,上代码:

代码语言:javascript
复制
 #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***16@qq.com"
_pwd  = "vaz*****yzabebf"  #服务器授权码
_to   = "224***497@qq.com"
msg = MIMEMultipart()
msg["Subject"] = "测试一下"  #邮件标题
msg["From"]    = _user
msg["To"]      = _to

文字部分

代码语言:javascript
复制
part = MIMEText("你好")
msg.attach(part)

附件部分

xlsx类型附件

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

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

代码语言:javascript
复制
part = MIMEApplication(open('D:\Tyrone.jpg','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="Tyrone.jpg")
msg.attach(part)

pdf类型附件

代码语言:javascript
复制
part = MIMEApplication(open('D:\Tyrone.pdf','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="Tyrone.pdf")
msg.attach(part)

mp3类型附件

代码语言:javascript
复制
part = MIMEApplication(open('D:\Tyrone.mp3','rb').read())
part.add_header('Content-Disposition', 'attachment', filename="Tyrone.mp3")
msg.attach(part)
代码语言:javascript
复制
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 "失败!"
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档