前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python使用smtp在邮件中嵌入图片

python使用smtp在邮件中嵌入图片

作者头像
灯珑LoGin
发布2022-10-31 09:34:33
2.2K0
发布2022-10-31 09:34:33
举报
文章被收录于专栏:龙进的专栏

在前面学了发送HTML格式的邮件,而我们都知道HTML网页可以嵌入如图片、视频等元素,那我们是否可以在HTML格式的邮件之中嵌入这些内容呢、答案是可以的,但是效果不好。因为,大部分的邮件客户端和服务商都会屏蔽邮件正文的外部资源,像网页中的图片或者视频、音频等都是外部资源。

如果我们想要发送图片,只需把图片作为附件添加到邮件消息体中,然后再HTML格式的正文中使用src=cid:img格式嵌入即可

举个例子吧。在这个例子中,要把发件邮箱、密码、收件邮箱、smtp服务器换成自己使用的,这个程序才能正常运行。以及要在程序目录下准备好一张图片并在代码之中调用这张图片

代码语言:javascript
复制
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.header import Header


sender = 'xxx@xx.com'
password = 'xxxxx'

receiver = {'x@xx.com', }

#采用related定义内嵌资源的邮件体
message = MIMEMultipart('related')

message['From'] = Header(sender, 'utf-8')
message['To'] = Header('邮件', 'utf-8')
message['Subject'] = 'Python SMTP 发送的带图片的邮件'
msg_content = MIMEMultipart('alternative')
mail_msg = """
<p>使用python发送邮件</p>
<br>
<p>
图片
<img src="cid:img1">
</p>
"""
msg_content.attach(MIMEText(mail_msg, 'html', 'utf-8'))
message.attach(msg_content)
with open('test.jpg', 'rb') as f:
    img1 = MIMEImage(f.read())

img1.add_header('Content-ID', 'img1')
message.attach(img1)
try:
    smtp = smtplib.SMTP_SSL('smtp.qiye.aliyun.com', 465)
    smtp.login(sender, password)
    smtp.sendmail(sender, receiver, message.as_string())
    print('邮件已发送!')
except smtplib.SMTPException as e:
    print('出现错误!', e.args[1].decode('gbk'))

在收件邮箱中,我收到的邮件长这样子:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年8月28日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档