Python发送多附件邮件的基本思路,首先就是用MIMEMultipart()方法来表示这个邮件由多个部分组成。然后再通过attach()方法将各部分内容分别加入到MIMEMultipart容器中。MIMEMultipart有attach()方法,而MIMENouMultipart没有,只能被attach。

python中MIME各对象的继承关系如下:

MIME有很多种类型,如果附件是文本格式,就是MIMEText;如果是图片格式就行MIMEImage;如果是音频格式就用MIMEAudio,如果是其他类型的格式例如pad,word、Excel等类型的,就很难确定用那种MIME了,此时可以使用MIMEApplication()方法。MIMEApplication默认子类型是application/octet-stream,表明“这是个二进制,不知道文件的下载类型”,客户端收到这个声明后,根据文件后的扩展名进行处理。

import smtplib
import unittest
import HTMLTestRunner
import os,time,datetime
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.audio import MIMEAudio
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header# 定义发送邮箱和接收邮箱
sender = 'XXX@qq.com'
receivers = ['XXX@qq.com']# 多附件邮件基本思路,首先用MIMEMultipart()来标识这个邮件由多个部分组成
# 然后通过Header方法,定义邮件的发送人、接收人、邮件标题;MIMEtext构造邮件正文
# 然后再用attach()方法将各部分内容分别加入到MIMEMultipart容器内
message = MIMEMultipart()
message['From'] = Header("python程序", 'utf-8')
message['To'] =  Header("丑小鸭", 'utf-8')
message['Subject'] = Header('带附件的邮件测试', 'utf-8')
message.attach(MIMEText('这是用Python编写的邮件发送程序……', 'plain', 'utf-8'))#通过MIMEApplication构造附件1
att1=MIMEApplication(open('E:\\Path\\fliename','rb').read())
att1["Content-Type"]='application/octet-stream'
#att1["Content-Disposition"] = 'attachment; filename="test1.html"'
att1.add_header('content-disposition', 'attachment', filename='fujian1.html')
message.attach(att1)#通过MIMEText构造附件2文本
#Content-Type(内容类型)定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件
#[Content-Type介绍](https://www.runoob.com/http/http-content-type.html)
#application/octet-stream:二进制流数据(如常见的文件下载)
# Content-Disposition激活附件下载对话框。Content-Disposition有两种属性:inline 和 attachment
# inline:默认值,将文件内容直接显示在页面;
# attachment:弹出对话框,让用户下载
# filename:定义下载文件的文件名。
att2=MIMEText(open('E:\\Path\\filename.txt','rb').read(),'base64','utf-8')
att2["Content-Type"]='application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="fujian2.txt"'
message.attach(att2)#通过MIMEImage构造附件3图片
att3=MIMEImage(open('E:\\path\\filename.jpg','rb').read())
att3["Content-Type"]='application/octet-stream'
att3["Content-Disposition"] = 'attachment; filename="fujian3.jpg"'
message.attach(att3)#通过MIMEAudio构造附件4。MEMEAudio需要定义音频类型
#[不同音频对应的类型参考](http://https://www.cnblogs.com/zhongcj/archive/2008/11/03/1325293.html )
att4=MIMEAudio(open('E:\\path\\filename.mp3','rb').read(),'audio')
att4["Content-Type"]='application/octet-stream'
att4["Content-Disposition"] = 'attachment; filename="fujian4.mp3"'
message.attach(att4)# 链接SMTP服务器
#[开通QQ邮箱SMTP服务,获取授权码](http://https://www.cnblogs.com/givemelove/p/11097778.html)
smtp = smtplib.SMTP()
smtp.connect('smtp.qq.com')
smtp.login('XXXX@qq.com', '授权码')
smtp.sendmail(sender, receivers, message.as_string())
print ("邮件发送成功!!!")
smtp.quit()

运行后,查看对应的测试结果:

Python发送多附件邮件的方法相关推荐

  1. python发送超大附件邮件_干货!大批量的邮件这样发送!简单方便快捷

    用Python发邮件有哪些优势?批量发送邮件,并且各邮件可以不同 高度自定义的定时发送 更有效地管理收件箱 基本概念 有关邮件的基本概念,可以查看下图 代码操作前的配置 以网易163邮箱为例,邮箱需要 ...

  2. python 发送带附件邮件到钉钉邮箱+邮件内容带有表格

    import smtplib import pandas as pd # smtplib这个模块是管发邮件 from email.mime.text import MIMEText # 构造邮件内容 ...

  3. python发送超大附件邮件_Python实现发送邮件

    新浪邮箱smtp服务器 外发服务器:smtp.vip.sina.com 收件服务器:pop3.vip.sina.com 新浪免费邮件 外发服务器:smtp.sina.com.cn 收件服务器:pop3 ...

  4. python邮件发送csv附件_Python2.7 smtplib发送带附件邮件报错STARTTLS解决方法

    最近在SIOMP系统中添加一项功能时,即自动发送带附件邮件到指定邮箱时,发现在发送时报错:错误信息:STARTTLS extension not supported by server.很是奇怪,但发 ...

  5. Python 发送邮件 和 发送带附件邮件

    摘要:      平时运行一些脚本,需要把结果发送到邮箱,可以用python来处理,如下: 1,有邮件服务器: #!/bin/env python # -*- encoding: utf-8 -*- ...

  6. python接收邮件内容启动程序_Python实现发送与接收邮件的方法详解

    本文实例讲述了Python实现发送与接收邮件的方法.分享给大家供大家参考,具体如下: 一.发送邮件 这里实现给网易邮箱发送邮件功能: import smtplib import tkinter cla ...

  7. Python 发送带附件的邮件 发出去的附件格式就成bin

    导语:学习到使用Python发送带附件的邮件,但收件人收到的附件格式是bin,附件名称也不是filename写的名称. 1.效果如下: 2.解决办法: 将 att1['Content-Disposit ...

  8. python3发送邮件_Python3使用SMTP发送带附件邮件

    一.设置开启SMTP服务并获取授权码 可以参考第一篇文章,这里不再赘述:[一]https://www.jb51.net/article/142220.htm 二.使用Python3 发送带附件的邮件 ...

  9. python发邮件11002_【python发送zabbix报警邮件,SSL版本】mailman.py

    [python发送zabbix报警邮件,SSL版本]mailman.py#!/usr/local/bin/python3 # # via  @ 20150210 # SSL only ''' 用法: ...

最新文章

  1. React篇-报错信息:warning: Can't call setState (or forceUpdate) on an unmounted component.
  2. UNIX文件的实现——索引节点
  3. 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  4. 使用代码获得所有适用于创建的transaction type
  5. 不等待输入_明明显示“对方正在输入”却总等不来回复,其实是你误解了
  6. 【LeetCode】7. Reverse Integer
  7. directdraw显示yuv视频,出现屏保时,yuv显示不出来,表面丢失
  8. java 字符串排序_Java控制台输入字符串及字符串比较
  9. SpringCloud Alibaba - Nacos 作为配置中心 读取Yaml配置信息
  10. [Swift]LeetCode528. 按权重随机选择 | Random Pick with Weight
  11. erp进销存多店系统源码 云进销存 超市管理
  12. 【python】用递归解决汉洛塔问题
  13. 2022UI自动化测试框架搭建 —— yaml文件管理定位元素
  14. 安卓手机如何更改开机 关机 动画
  15. vim常用操作记这些完全够用了
  16. 一步一步实现WPF透明化窗口
  17. Android音频可视化
  18. (六)Python查询12306余票:升级版-----图形化界面代码
  19. Linux如何挂载windows共享文件夹(包含Linux报错解决)
  20. Python字符串驻留机制

热门文章

  1. 打补丁是什么意思?如何快速对云主机批量打补丁?用什么软件?
  2. 汇开优店APP介绍及汇开优店管家区别
  3. 如何把图片转化成excel表格?
  4. Python-str2int
  5. Cesium火灾动画(模型动画,粒子特效)
  6. Reactor And Gev 详解 通俗易懂
  7. 怎么免费测试短信验证码平台的安全稳定性?
  8. JavaEE——SSM框架整合实现学生信息注册案例
  9. ns-3 教程 —— 资源
  10. 《Hadoop系列》脚本开发自动化配置伪分布式Hadoop