• Selenium2+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***16@qq.com"
    _pwd = "vaz*****yzabebf" #服务器授权码(在qq邮箱设置里找到账户里的smtp服务,然后开启,会生成服务器授权码!)
    _to = "224***497@qq.com"
    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)

    html类型

    part = MIMEText('<html><h1>你好!</h1></html>','html','utf-8')
    msg.attach(part)

    try:
    s = smtplib.SMTP_SSL("smtp.qq.com", 465) #连接smtp邮件服务器,端口默认是25,所有这边也可以写成("smtp.qq.com")
    s.login(_user, _pwd) #登陆服务器
    s.sendmail(user, _to, msg.as_string()) #发送邮件
    s.quit()
    print "完美!"
    except smtplib.SMTPException,e:
    print "失败!"

  • 相关阅读:
    Flask中的Templates
    Flask中的route
    flask的安装
    SQLAlchemy中表结构的一对多
    SQLAlchemy中表结构的一对一
    flask连接mysql数据库
    获取列表中的最大的N项和最小的N项
    FileNotFoundError: [Errno 2] No such file or directory的解决方法
    LC 890. Find and Replace Pattern
    LC 894. All Possible Full Binary Trees
  • 原文地址:https://www.cnblogs.com/caoj/p/7805287.html
Copyright © 2020-2023  润新知