上一篇文章《使用Python的smtplib模块发送简单邮件》介绍了调用smtplib模块发送包含简单内容的邮件,本文继续学习参考文献1中的发送带附件的邮件的示例代码,同时由于参考文献1中的带附件邮件中并没有邮件附件,而仅仅是邮件内容中关联的内嵌资源附件,本文结合参考文献2,实现发送带附件的电子邮件,代码主要参照参考文献1-2,里面有部分内容也不是太明白,只是记录测试过程及个人理解。
  参考文献1中提供的发送带附件的邮件的示例代码及其程序运行效果如下所示,除了之前文章中用到的发送邮件所需的类及函数之外,代码中用到的类及函数的说明如下所示:

序号 类或函数 说明
1 MIMEMultipart 用于定义邮件中不同类型的内容,根据参考文献3的介绍,MIMEMultipart(‘related’)类型除了可以携带各种附件外,还可以将其它内容以内嵌资源的方式存储在邮件中,而MIMEMultipart(‘alternative’)类型可以传送超文本内容
2 attach 将给定的 payload 添加到当前载荷中,本文中应该是指将带超文本内容的MIMEMultipart作为邮件主体内容加到邮件中。
3 MIMEText 用来创建主类型为 text 的 MIME 对象。
4 open 用于打开文件
5 MIMEImage 用于将实际图像数据编码以便传输
6 add_header 用于设置高级头字段
# coding=utf-8import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipartsender='XXXXXXXX@qq.com'
password='XXXXXXXX'
to='XXXXXXXX@qq.com'def mail():ret=Truetry:msg=MIMEMultipart('related')msg['From']=sendermsg['To']=tomsg['Subject']='通过SMTP协议发送带附件邮件测试'msgAlternative=MIMEMultipart('alternative')msg.attach(msgAlternative)mail_msg="""<p>邮件测试</p><p><a ref="www.baidu.com">百度搜索</a></p><p>图片演示:</p><p><img src="cid:image1"></p>"""msgAlternative.attach(MIMEText(mail_msg,'html','utf-8'))fp=open('test.jpg','rb')msgImage=MIMEImage(fp.read())fp.close()msgImage.add_header('Content-ID','<image1>')msg.attach(msgImage)server=smtplib.SMTP('smtp.qq.com')server.login(sender,password)server.sendmail(sender,to,msg.as_string())print(msg.as_string())server.quit()except Exception as e:ret=Falseprint(e)return ret                     if mail():print('邮件发送成功')
else:print('邮件发送失败')


  上述程序代码中所用的图片只是作为内嵌资源用于在邮件主体内容中调用,并非是发邮件时附带的、可以下载的附件。为在邮件中增加附件,基于参考文献2中的代码,将其中夹带附件的代码内嵌到参考文献1的示例代码之中,主要增加的内容如下。:

     att = MIMEBase("application", "octet-stream")att.set_payload(open('test.jpg', "rb").read())att1.add_header("Content-Disposition", "attachment", filename=Header("test.jpg", "utf-8").encode())encoders.encode_base64(att)msg.attach(att)

  再调用发送邮件程序,即可将图片作为邮件附件一并发送,程序执行效果如下图所示:

参考文献:
[1]Python从菜鸟到高手
[2]https://blog.csdn.net/weixin_51424938/article/details/113795373
[3]https://blog.csdn.net/Winnycatty/article/details/84548381

使用Python的smtplib模块发送带附件的邮件相关推荐

  1. python调用sendcloud模板发送带附件的邮件

    import json import urllib import requestsclass Email:apiUser = "* *"apiKey = "* *&quo ...

  2. python菜谱发送到邮箱_Python菜谱5:发送带附件的邮件

    我们平时需要使用 Python 发送各类邮件,这个需求怎么来实现?答案其实很简单,smtplib 和 email库可以帮忙实现这个需求.smtplib 和 email 的组合可以用来发送各类邮件:普通 ...

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

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

  4. python 发送邮件正文字体设置_python 文字 坐标python smtplib模块发送SSL/TLS安全邮件实例...

    python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. smtp协议的基本命令包括: HELO 向服务器标识用户身份 MAIL 初始化邮件传输 mail f ...

  5. php邮箱文件发送源码,php简单实现发送带附件的邮件

    本文实例讲述了php简单实现发送带附件的邮件.分享给大家供大家参考.具体如下: 下面是静态html代码: 带附件的邮件发送 发送人: 收件人: 邮件主题: 邮件内容: 附件上传: sendmail.p ...

  6. SpringBoot中整合Mail实现发送带附件的邮件

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/35688 实现最简单的带标题以及文本内容的邮件发送: https:/ ...

  7. java 邮件 附件_java中javamail发送带附件的邮件实现方法

    本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理em ...

  8. 利用Jmail发送带附件的邮件时乱码的解决方案

    今天在利用Jmail发送带附件的邮件时,一直收不到附件,而是得到一些"乱码"如下:This is a multipart message in MIME format. ----N ...

  9. mailgun php版本,php – Mailgun发送带附件的邮件

    我正在尝试使用mailgun发送带附件的邮件. 邮件本身很好,但它缺少附件. 同样在mailgun日志中,它显示正常,但附件数组为空. 我用example.com替换了我的凭证. 该文件放在子目录中并 ...

最新文章

  1. 实践自定义UI—View
  2. 一个简单案例,5 分钟看懂 Java Lamdba 表达式
  3. Python的__getattr__方法学习
  4. Windows下安装Python模块时环境配置
  5. 有python基础学java_Python基础学习篇
  6. horizon流程图_项目实施流程和规范模板(测试方向)
  7. iis8使用url2.0模块实现http跳转到https
  8. 寻找节点d=n的节点算法
  9. HDFS简介及其功能
  10. 觅鹿影视在线解析源码带后台
  11. 程序员:职业很抓狂!前途很迷茫?送你破解困境秘籍!
  12. 谷歌浏览器刷新快捷键
  13. 经典推荐:盛大架构师周爱民回顾职业历程,分享十项建议
  14. 在U-boot中添加以太网驱动-Nazgul
  15. python绘制笛卡尔心形线方程_canvas绘制爱心的几种方法
  16. 利用Python对Excel按列值筛选并拆分表格到多个文件
  17. weiit—智慧中台,互联网生态体系构建者
  18. 基于Android的招聘求职网站的设计与实现
  19. 分布式基础——GFS(Google file system)
  20. YTU 3795 GCD 和 LCM

热门文章

  1. 会计专硕考研可以带计算机么,二本二战三跨如何考上985会计专硕之英语二篇
  2. 奇偶性与魔术(三)——魔术的艺术魅力
  3. Bug追踪_Bugly
  4. 荣耀30lite支持鸿蒙,荣耀30lite是什么型号
  5. python向上向下取整_python 向上取整ceil 向下取整floor 四舍五入round
  6. Python向上取整 向下取整的方法
  7. 告别低俗,网络直播应当如何传递“正能量”?
  8. 苹果蓝牙耳机平替哪个好用?苹果蓝牙耳机平价推荐
  9. MATLAB 面向对象编程 APP Designer基础
  10. 没有天赋?NO,离一幅栩栩如生的画,你只需要7个技巧