首页 > 其他分享 >邮件中添加图片内容

邮件中添加图片内容

时间:2024-01-16 19:44:57浏览次数:25  
标签:html server 添加 context message email 邮件 图片

背景:质量分析的数据是在网页端,每月质量分析结束后需要发送邮件。因为网页端的数据已经统计好了,并且展示形式也满足使用需求,只需要把网页端的数据通过邮件发送即可。

已经通过dp获取到了网页端的全屏截图本地保存了,只需要邮件把截图发送出去即可。

本来使用的是email.mime下的multipartimage

代码如下:

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

message = MIMEMultipart("alternative")
message["Subject"] = "质xxx测试邮件"
message["From"] = sender_email
message["To"] =", ".join(receiver_email)

# 邮件内容
html = """\
<html>
  <body>
    <p>各位,好!</p>
    <p>     以下是xxxx息:</p>
    <img src="cid:image1">
  </body>
</html>
"""

# 添加邮件正文
msgText = MIMEText(html, 'html')
message.attach(msgText)

# 读取本地图片并根据cid映射图片
with open('pic1.jpg', 'rb') as img_file:
    msgImage = MIMEImage(img_file.read())
msgImage.add_header('Content-ID', '<image1>') # 注意HTML中的cid与此处对应
message.attach(msgImage)


# 发送邮件
message.attach(msgImage)
context = ssl.create_default_context()
with smtplib.SMTP_SSL("mail.xxx.com", 465, context=context) as server:
    server.login(sender_email, login_password)
    server.sendmail(sender_email, receiver_email, message.as_string())

由于本人使用的是foxmail客户端,自测来看内容正常展示。

但是同事这边使用的是outlook客户端,显示图片是个红叉。

网上查了解决办法:文件>选项>信任中心>信任中心设置>`自动下载,把不自动下载标准...和不下载加密或...取消勾选。

重新发送了邮件,不展示...

关闭客户端再打开再重新发送邮件,依然不展示...

怀疑是我邮件正文的html写的有点简陋、怀疑是我截图的图片过大、怀疑是outlook版本有问题(好在我没升级...别瞎折腾了)

不死心又在网上搜了相同现象的问题,终于找到了。浅试一下:

使用email.message下的EmailMessageemail.utils下的make_msgid

from email.message import EmailMessage
from email.utils import make_msgid

message = EmailMessage()
message["Subject"] = subject
message["From"] = sender_email
message["To"] = ", ".join(receiver_emails)
html = """
<html>
  <body>
    <p>各位,好!</p>
    <p>     以下是xxxx息:</p>
    <img src="cid:image1">
  </body>
</html>
"""
figure_id = make_msgid()
html = html.replace('image1', figure_id[1:-1])
message.add_alternative(html, subtype='html')

with open('pic1.jpg', 'rb') as img_file:
	message.get_payload()[0].add_related(img_file.read(), 'image', 'jpeg', cid=figure_id)

with smtplib.SMTP_SSL(self.host, self.port, context=context) as server:
    server.login(sender_email, login_password)
    server.sendmail(sender_email, receiver_email, message.as_string())

重点就在需要使用make_msgid生成附件的id,然后消息体读取文件后跟这个id关联上。(看起来一开始的写法好像也没问题,也是能关联起来的呀,在这个问题上耽搁时间比较久,不再深究)

发送邮件,验证接受图片正常展示。所以跟开没开outlook客户端信任中心的自动下载没关系。

标签:html,server,添加,context,message,email,邮件,图片
From: https://www.cnblogs.com/wjlv/p/17968407

相关文章

  • vue+js实现点击图片,图片放大
    1.首先在template中插入image,并赋予点击事件(这个时候是小图)<template><div><imgsrc="@/assets/images/avatar.png"@click="imgShow()"/></div></template>2.data定义点击放大的图片url,imageUrl为点击后放大的大图的urldata(){return{......
  • 设计之道:图片素材选择与创意运用
    在现代设计领域,图片素材的选择与运用至关重要。一张优质的图片素材可以为设计增色添彩,提升作品的品质和视觉效果。那么,如何挑选合适的图片素材,并将其巧妙地融入设计中呢?本文将为您一一解答。免版素材库|一个覆盖广泛主题工具的高效在线平台(amd794.com)https://amd794.com......
  • 在CMD和PowerShell下如何制作图片马
    目录在CMD中使用copy命令:在PowerShell中使用gc命令:总结:图片马通常是在图片文件中嵌入其他信息,以隐藏额外的数据。当使用命令行工具(如CMD或PowerShell)制作图片马时,copy命令和Get-Content(简写为gc)命令的目标是将一段数据(可能是一段脚本或其他二进制数据)嵌入到图片文......
  • 在“安全”选项卡下,“信任站点”,“站点”按钮是灰色无法点添加站点,用策略添加
    问题描述:在“安全”选项卡下,“信任站点”,“站点”按钮是灰色无法点击解决方法:组策略来添加可信任站点第一步:win+r运行gpedit.msc回车第二步:计算机配置--------管理模板--------windows组件--------InternetExplorer--------Internet控制面板--------安全页,第三步:查看......
  • 受信任的站点添加按钮灰色,用特殊方法组策略来添加可信任站点
     问题描述: 在“安全”选项卡下,“信任站点”,“站点”按钮是灰色无法点击解决方法:组策略来添加可信任站点第一步:win+r运行gpedit.msc回车第二步:计算机配置--------管理模板--------windows组件--------InternetExplorer--------Internet控制面板--------安......
  • WPS邮件合并:将图片名称通过WPS整体成文档
    项目介绍项目功能介绍(影像志):将文件夹下的所有图片名称(图1)批量制作成word中的样式(图2)。图1图2项目章节/知识点获取文件夹下的所有文件名称Excel表格数据分列Word邮件合并观察/思考/总结1、文件夹下的所有图片名称包括:日期+文字说明+摄影者。2、Word效果图中包括:照片号+摄影者+摄影时......
  • vue引入图片的几种方式
    vue引入图片的几种方式:https://blog.csdn.net/qq_36571836/article/details/118806421?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4-118806421-blog-80015777.235^v40^pc_relevant_3m_sort_dl_base2&spm=1001.2101.3001.4242......
  • php生成图片二维码
    使用php类库PHPQRCode地址:http://phpqrcode.sourceforge.net/下载:http://sourceforge.net/projects/phpqrcode/下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。phpqrcode.php提供了一个关键的png()方法,其中参数$frame表示......
  • pip添加代理
    不能访问外网的服务器需要设置pip代理,其中代理为nexus中的pip库命令行设置代理PIP_HOST="nexus.goldwind.com.cn"PIP_PROXY_URL="http://$PIP_HOST/repository/pypi-group-proxys"pipinstall-i$PIP_PROXY_URL-U--trusted-host$PIP_HOSTpippipconfigsetglobal.inde......
  • 轻松导航:教你在Excel中添加超链接功能
    前言超链接是指在网页或电子文档中常见的元素,它的主要作用是将一个文本或图像与另一网页、文件或资源链接起来,从而使用户能够通过点击该链接跳转到目标资源、超链接可以起到导航以及引用的作用。超链接通常有以下几种用途:网页链接文档链接内部定位链接电子邮件链接在Java......