python发送邮件,带附件邮件,图片,文档,二进制文件

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。python发送邮件,带附件邮件,图片,文档,二进制文件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

python发送邮件,带附件邮件,图片,文档,二进制文件

代码


#连接邮件服务器需要smtplib模块
import smtplib

#发送字符串的邮件
from email.mime.text import MIMEText

#处理多种形态的邮件主体我们需要 MIMEMultipart 类
from email.mime.multipart import MIMEMultipart

#处理图片类型需要 MIMEImage 类
from email.mime.image import MIMEImage

#邮件不管什么类型的附件都是可以使用MIMEApplication类
from email.mime.application import MIMEApplication

line = "请查看附件"

def sendmail(smtp_host,smtp_port,subject,smtp_sender,smtp_receive,password):

    #创建多主体的邮件 的实例化对象,可包含文本,附件
    message = MIMEMultipart()
    message['Subject'] = subject  # 邮件主题显示
    message['From'] = smtp_sender  # 发件人显示,没有实际作用
    message['To'] = smtp_receive  # 收件人显示,没有实际作用

    # 邮件主体之正文内容
    # att = MIMEText(line, 'plain', 'utf-8')
    # message.attach(att)

    #此一行相当于上方两行
    message.attach(MIMEText(line, 'plain', 'utf-8'))

    #邮件主体之附件1
    atttxt = MIMEApplication(open("testatt.txt",'r').read())
    #filename为客户端接收到的附件的名字,可自定义
    #Content-Disposition为属性名disposition-type是以什么方式下载,如attachment为以附件方式下载
    #attachment为以附件方式下载,不直接显示内容,而是弹出一个"文件下载"的对话框,由客户端来决定"打开"还是"保存”
    atttxt.add_header('Content-Disposition', 'attachment', filename="testatt.txt")
    #把附件加入邮件
    message.attach(atttxt)

    #txt文档也可以用二进制读取发送
    # atttxt = MIMEApplication(open("testatt.txt",'rb').read())
    # filename为客户端接收到的附件的名字,可自定义
    # atttxt.add_header('Content-Disposition', 'attachment', filename="testatt.txt")
    # 把附件加入邮件
    # message.attach(atttxt)


    #邮件主体之附件2
    attdoc = MIMEApplication(open("testatt.docx","rb").read())
    attdoc.add_header('Content-Disposition', 'attachment', filename="testatt.docx")
    message.attach(attdoc)

    # 邮件主体之附件3
    #发送图片方法1    图片为二进制,需要rb读取
    # attimag = MIMEImage(open("testatt.jpg","rb").read())
    # attimag.add_header('Content-Disposition', 'attachment', filename="testatt.jpg")
    # message.attach(attimag)


    #发送图片方法2    图片为二进制,需要rb读取
    # image_data = open('testatt.jpg','rb')  # 二进制读取图片
    # attimag = MIMEImage(image_data.read())  # 设置读取获取的二进制数据
    # image_data.close()  # 关闭刚才打开的文件
    # attimag.add_header('Content-Disposition', 'attachment', filename='testatt.jpg')
    # message.attach(attimag)

    #发送图片方法3    图片为二进制,需要rb读取,二进制文件发送,三种写法都可以,第三种使用MIMEApplication方法,最简洁
    attimag = MIMEApplication(open("testatt.jpg","rb").read())
    attimag.add_header('Content-Disposition', 'attachment', filename="testatt.jpg")
    message.attach(attimag)

    # 邮件主体之附件4
    #二进制文件发送方法均相同
    attzip = MIMEApplication(open("testatt.zip","rb").read())
    attzip.add_header('Content-Disposition', 'attachment', filename="testatt.zip")
    message.attach(attzip)




    # 创建 SMTP 对象
    smtp = smtplib.SMTP_SSL(smtp_host, smtp_port)
    # 连接(connect)指定服务器
    smtp.connect(smtp_host, smtp_port)
    # 登录,需要:登录邮箱和授权码
    smtp.login(smtp_sender, password)
    smtp.sendmail(smtp_sender, smtp_receive, message.as_string())
    print('发送成功')
    smtp.quit()


if __name__ == '__main__':
    smtp_host = "smtp.qq.com"
    smtp_port = 465
    subject = "qq_mail"
    smtp_sender = "9******8@qq.com"
    smtp_receive = "9******8@qq.com"
    password = 'a******e'
    sendmail(smtp_host,smtp_port,subject,smtp_sender,smtp_receive,password)

发送成功

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154041.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!