zoukankan      html  css  js  c++  java
  • 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 "失败!"

  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/caoj/p/7805287.html
Copyright © 2011-2022 走看看