博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python2.6.x/python3发送邮件,并在正文中显示附件中的图片
阅读量:2166 次
发布时间:2019-05-01

本文共 2215 字,大约阅读时间需要 7 分钟。

直接在HTML邮件中链接图片地址是不行的。引文大部分邮件服务商都会自动屏蔽带有外链的图片,因为不知道这些链接是否指向恶意网站。

只需要在HTML中通过

方式一:引用src="cid:0"就可以把附件作为图片嵌入了。如果有多个图片,给它们依次编号,然后引用不同的cid:x即可。

Q: 使用方式一在苹果邮件客户端会出现A1的邮件图片,会替换A2的邮件图片;

方式二:

读取图片并添加邮件头

fp = open(imgpath, 'rb')
msgImage = MIMEImage(fp.read())
fp.close()

# Define the image's ID as referenced above

msgImage.add_header('Content-ID', '<image{count}>'.format(count=i))
msgRoot.attach(msgImage)
解决方式一中出现的问题;

# -*- coding:utf-8 -*-import smtplibfrom email import encodersfrom email.mime.base import MIMEBasefrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.header import Headerclass EmailMsg():    def sendMail(self, msg):             # 邮件对象:        message = MIMEMultipart()        message.attach(MIMEText(msg, 'html', 'utf-8'))        # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码        # message = MIMEText(msg, 'html', 'utf-8')        message['from'] = 'liao@163.com'        message['to'] = 'liao@qq.com'        password = "123456"        message['subject'] = Header(u'公众号消息', 'utf-8').encode()        smtp_server = "smtp.163.com"        server = smtplib.SMTP(smtp_server, 25)  # SMTP协议默认端口是25        # 打印出和SMTP服务器交互的所有信息。        # server.set_debuglevel(1)        # 登录SMTP服务器        server.login(message['from'], password)        # 添加附件就是加上一个MIMEBase,从本地读取一个图片:        with open('./img/00_00.jpg', 'rb') as f:            # 设置附件的MIME和文件名,这里是png类型:            mime = MIMEBase('image', 'jpg', filename='timg.jpg')            # 加上必要的头信息:            mime.add_header('Content-Disposition', 'attachment', filename='test.png')            mime.add_header('Content-ID', '<0>') //如果有多个文件需要使用.format(index)            mime.add_header('X-Attachment-Id', '0') //如果有多个文件需要使用.format(index)            # 把附件的内容读进来:            mime.set_payload(f.read())            # 用Base64编码:            encoders.encode_base64(mime)            # 添加到MIMEMultipart:            message.attach(mime)        # 发邮件,由于可以一次发给多个人,所以传入一个list;        # 邮件正文是一个str,as_string()把MIMEText对象变成str。        server.sendmail(message['from'], [message['to']], message.as_string())        server.quit()if __name__ == '__main__':    em = EmailMsg()    em.sendMail('''        

附件中的图片

.... ''')

 

转载地址:http://gyizb.baihongyu.com/

你可能感兴趣的文章
Bagging 简述
查看>>
详解 Stacking 的 python 实现
查看>>
简述极大似然估计
查看>>
用线性判别分析 LDA 降维
查看>>
用 Doc2Vec 得到文档/段落/句子的向量表达
查看>>
使聊天机器人具有个性
查看>>
使聊天机器人的对话更有营养
查看>>
一个 tflearn 情感分析小例子
查看>>
attention 机制入门
查看>>
手把手用 IntelliJ IDEA 和 SBT 创建 scala 项目
查看>>
双向 LSTM
查看>>
GAN 的 keras 实现
查看>>
AI 在 marketing 上的应用
查看>>
Logistic regression 为什么用 sigmoid ?
查看>>
Logistic Regression 为什么用极大似然函数
查看>>
SVM 的核函数选择和调参
查看>>
LightGBM 如何调参
查看>>
用 TensorFlow.js 在浏览器中训练神经网络
查看>>
cs230 深度学习 Lecture 2 编程作业: Logistic Regression with a Neural Network mindset
查看>>
梯度消失问题与如何选择激活函数
查看>>