Python中是如何发送邮件的,可以参考如下地址,很详细的:

python3之模块SMTP协议客户端与email邮件MIME对象 - Py.qi - 博客园

1.采用Django中的EmailMultiAlternatives发送html邮件,使用MIMEImage嵌入图片到邮件中。

from email.mime.image import MIMEImage
from django.core.mail import EmailMultiAlternatives#拼接css
content_html = '''<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head><title>Vinta</title><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2 user-scalable = yes"><style>table {border-top: 1px solid #ccc;border-left: 1px solid #ccc;}table td, table th {border-bottom: 1px solid #ccc;border-right: 1px solid #ccc;padding: 3px 5px;}table th {background-color: #f1f1f1;border-bottom: 2px solid #ccc;text-align: center;}</style>
</head><body><p>第一张图片:</p><img src="http://127.0.0.1:8000/auditImg/20220124/423f427f652645c2857fde98ecfed101.png" style="max-width:100%;" contenteditable="false"/><table border="0" width="100%" cellpadding="0" cellspacing="0”><tbody><tr><th>test1</th><th>test2</th><th>test3</th><th>test4</th></tr><tr><td>hhhhh1</td><td>hhhhh1</td><td>hhhhh1</td><td>hhhhh1</td></tr></tbody></table><p>第二张图片:</p><img src="http://127.0.0.1:8000/auditImg/auditImg/20220124/e31b5d429e7b4a8793052eb6879f135c.png" style="max-width:100%;" contenteditable="false"/></body>
</html>'''def sendEmail(subject,content_html,from_email,to,cc)msg = EmailMultiAlternatives(subject = subject,body = content_html, from_email = from_email, to = to, cc = cc)msg.attach_alternative(content_html, "text/html")#处理html中的图片#由于保存的图片地址是http://127.0.0.1:8000/auditImg/20211021/2322211.png#真实的图片保存路径为static/img/detail/20211021/2322211.png     #所以需要转换一下路径,拿到图片地址 content_html =content_html.replace('src="http://127.0.0.1:8000/auditImg/','src="cid:')imgList = re.findall('src="cid:(.*?)"', html_content, re.S)print('imgList_____',imgList)for img in imgList:imgPath = os.path.join('static/img/detail',img)print(imgPath)image = add_img(imgPath,img)# msg.attach(image)try:msg.send()except Exception as e:print('send_mail exec error'+str(e))def add_img(src, img_id):with open(src, 'rb') as f:msg_image = MIMEImage(f.read())msg_image.add_header('Content-ID', img_id)return msg_image

参考链接:

django中发送html邮件以及html中含有图片的邮件_随灬亦-CSDN博客

2.采用Python发送html邮件,嵌入图片,并添加附件。


import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart sender = 'Xiaoqian_Ma@pegatroncorp.com'        #发送邮箱
receivers = ['Xiaoqian_Ma@pegatroncorp.com']   #接受邮箱message = MIMEMultipart('related')          #采用related定义内嵌资源的邮件体
message['Subject'] = '邮件标题。。。。。'
message['From'] = sender
message['To'] = ','.join(receivers)#html内容
#拼接css
html_css_head = '''<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head><style>table {border-top: 1px solid #ccc;border-left: 1px solid #ccc;}table td, table th {border-bottom: 1px solid #ccc;border-right: 1px solid #ccc;padding: 3px 5px;}table th {background-color: #f1f1f1;border-bottom: 2px solid #ccc;text-align: center;}      </style>
</head>
<body>
<div id="content">'''html_css_footer = '''</div></body></html>'''
mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
<p>图片演示:</p>
<p><img src="cid:image1"></p>
<p>表格演示:</p>
<table>
<tr><th>第一列</th><th>第二列</th><th>第三列</th><th>第四列</th></tr>
<tr><td>h1</td><td>h2</td><td>h3</td><td>h4</td></tr>
<tr><td>d1</td><td>d2</td><td>d3</td><td>d4</td></tr>
</table>
"""
mail_msg = html_css_head + mail_msg + html_css_footer
msgtext = MIMEText(mail_msg,_subtype='html',_charset='utf-8')   #_subtype有plain,html等格式,避免使用错误
message.attach(msgtext)# 指定图片为当前目录
fp = open('img.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image1>')
message.attach(msgImage)#添加附件
filename = 'file.xlsx'
attachment='/Users/mac/Desktop/file.xlsx'
att1 = MIMEApplication(open(attachment, 'rb').read())
att1.add_header('Content-Disposition', 'attachment', filename=('gbk', '', filename))  #注意:此处basename要转换为gbk编码,否则中文会有乱码。
message.attach(att1)#发送邮件
try:smtpObj = smtplib.SMTP('mail host',25)smtpObj.login("用户名","密码")smtpObj.sendmail(sender, receivers, message.as_string())print("邮件发送成功")
except smtplib.SMTPException:print("Error: 无法发送邮件")

发出的邮件如下:

Django/Python发送HTML邮件 (包含图片)相关推荐

  1. Python 发送hotmail 邮件

    Python 发送hotmail 邮件 今天想学习怎么使用Python来发送邮件,然后发现一个Python自带的模块smtplib.立刻了解了下,便开始撸代码尝试. 话不多说,先了解下这个模块,以下几 ...

  2. python发送qq邮件(加密非加密)

    python发送qq邮件,加密发送,非加密发送 设置qq邮箱 设置开启客户端功能 设置--->账户 开启POP3/SMTP服务 根据提示开启 授权码 开启成功 查看qq邮件服务器信息1 查看qq ...

  3. Python发送网易邮件554错误解决

    python发送网易邮件出现554错误原因很多,记录本次遇到的问题 贴上代码 #coding: utf-8 import smtplib,sys,re from email.mime.text imp ...

  4. python发邮件图片太长显示不出来_小白入门,用python 发送定时邮件,将Dataframe转为邮件正文,链接显示为图片...

    在实际工作中,我们常常会遇到定时发送邮件的任务,基于我的实践,分享给大家,也许一篇文章写不完,就先列个目录. 本文想要解决的问题: 用python构造一封邮件,并设置定时发送出去.往往,这只是最低级的 ...

  5. 通过python发送带有附件、图片、表格的邮件

    目录 纯文本邮件 带图片邮件 带表格邮件 带有附件的邮件 最近的工作中经常需要监控一些任务或服务,以期望及时发现问题.或者方便看到工作的进展或成果,这时候通过自动发送邮件就是一个好的解决方案.同时,也 ...

  6. 教你一招用python发送QQ邮件

    这里用到了Python的两个包来发送邮件: smtplib 和 email . Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件"包裹".使用 ...

  7. python3 发送qq邮件带图片

    # -*- coding: utf-8 -*- import smtplib from email.mime.multipart import MIMEMultipart from email.mim ...

  8. Python发送文本邮件

    在运行机器学习等需要大量计算的程序时,可以在报错或者程序运行完成时,发送邮件提醒. 参考:Python发送邮件(文本邮件发送) # 运行完,发邮件提醒 # 参考 https://blog.csdn.n ...

  9. 【转载】如何用Python发送Email邮件?

    文章目录 综述 连接SMTP服务器 登录SMTP服务器 如何获得邮箱授权码 通过SSL登录SMPT服务器 发送\抄送文本邮件 密送文本邮件 发送HTML邮件 参考 综述 用代码发送Email,在很多场 ...

  10. python发送qq邮件_python使用SMTP发送qq或sina邮件

    python使用qq邮箱(个人邮箱)发送邮件需开启qq邮箱的SMTP服务 在设置中开启pop3/SMTP服务,返回的密码就是之后代码中登录使用账户密码(在完整代码中标识了出来) 之后出现如下错误 复制 ...

最新文章

  1. R语言在直方图条(柱形)上添加计数(count)或者百分比(percent)标签
  2. NetBeans 时事通讯(刊号 # 109 - Jul 17, 2010)
  3. 【ExtJS】 布局Layout
  4. TensorFlow 2.0不好用?会了是“真香”!
  5. Python深浅拷贝辨析
  6. 【Kaggle微课程】Natural Language Processing - 2.Text Classification
  7. spring.shardingsphere.rules.sharding.sharding-algorithms.database_inline.props‘ is not valid
  8. 作者:杨静(1979-),女,博士,合肥工业大学计算机与信息学院副教授
  9. Unity5 Survival Shooter开发笔记2
  10. jsoncpp的安装与使用实战(windows交叉编译Ubuntu)
  11. GBDT(Gradient Boosting Decision Tree) 没有实现只有原理
  12. 河南大学计算机组成原理,河南大学计算机组成原理考点.pdf
  13. c语言全局变量global,C语言定义共享全局变量
  14. 《知乎周刊:读书这件小事》摘记及书评
  15. linux udev 禁用u盘,udev自动挂载U盘
  16. CSS属性分类扫描-表格属性
  17. 中国碳酸钾市场趋势报告、技术动态创新及市场预测
  18. OSChina 周一乱弹 —— 怎么搭讪学医的女孩,说你有病!
  19. 《艾尔登法环》雷亚卢卡利亚结晶坑道的位置
  20. 5年以上旧电脑如何升级

热门文章

  1. CTGU实验6_2-创建还书存储过程
  2. 安装VMware ESXi
  3. C++/Qt 计算24点
  4. War3地图编辑器基础:玩家设置+地图元素的属性设置+地图事件设置
  5. 苹果手机电池健康怎么看_打开手机这个功能,就能知道手机电池的健康度,安卓苹果都可以!...
  6. 【读论文】一种半监督文本分类方法:MixText
  7. [GZOI2019GXOI2019]省选AFO记
  8. adb connect 连接机顶盒显示:由于目标计算机积极拒绝,无法连接10061
  9. MonoGRNet: A Geometric Reasoning Network for Monocular 3D Object Localization
  10. 计算机云平台热门吗,哪个云电脑好用又便宜?国内的云游戏平台到底哪个好?