我想要获取图像显示为用Python发送的邮件的一部分。在Python文档上有一个不起作用的例子。Python 3 EmailMessage html消息与图像
from datetime import datetime
import sys
import smtplib
from email.message import EmailMessage
from email.headerregistry import Address
from email.utils import make_msgid
from email.mime.image import MIMEImage
attachment = '/user/file/test.png'
import email.policy
msg = EmailMessage()
msg['To'] = Address("Srujan", '[email protected]')
msg['From'] = Address("Srujan", '[email protected]')
msg['Subject'] = "Nice message goes with it "+str(datetime.now())
id = make_msgid()
msg.set_type('text/html')
msg.set_content(" This is the Data Message that we want to send")
html_msg = "<br> <b><u> This is the Text .... </u></b><br> <img src='cid:{image_id}' />".format(image_id=id[1:-1])
msg.add_alternative(html_msg, subtype="html")
image_data = open(attachment, "rb")
image_mime = MIMEImage(image_data.read())
image_data.close()
msg.add_attachment(image_mime, cid=id, filename = "myown.png" ,)
try:
with smtplib.SMTP('example.com') as s:
s.ehlo()
s.starttls()
s.ehlo()
s.send_message(msg)
s.close()
print("Email sent!")
except:
print("Unable to send the email. Error: ", sys.exc_info()[0])
raise
夫妇的事情,我注意到:
要:Srujan < “[email protected]”>来源:Srujan < “[email protected]”>主题:尼斯消息去它2016-01-21 17:39:23.642762 MIME版本:1.0内容类型:multipart/mixed; boundary =“=============== 3463325241650937591 ==”
- =============== 3463325241650937591 == Content-Type :multipart/alternative; border =“=============== 0739224896516732414 ==”
- =============== 0739224896516732414 == Content-Type:文本/无格式;字符集= “utf-8” 内容传输编码:7位
这是我们想要的数据报文发送
- =============== 0739224896516732414 == Content-Type:text/html;字符集= “UTF-8” 内容传输编码:7位MIME-版本:1.0
这是文本....- ====== ====== 0739224896516732414 == -
- =============== 3463325241650937591 == 内容类型:信息/ RFC822内容传送编码: 8位内容处理:附件; 文件名= “myown.png” 内容ID: < 20160122013923.64205.76661> MIME-版本:1.0
内容类型:图像/ PNG MIME-版本:1.0内容传输编码: BASE64
iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAIAAAAVFBUnAAAABmJLR0QA/WD/AP + gvaeTAAAgAElE QVR4nOzdd2BUVfYH8HNfmZJAChAEQ1FAqoKgCAsWLEgTG4gKP11FQNG1AauIgGBXVhRUsCK4i6gI
现在附加消息具有两个内容类型值秒。电子邮件附带只是文本,并没有图像
我已经成功地用MultiPart类,但希望用EmailMessage实现。
Greate,我会试试看:)谢谢。 – SrujanSreepathi
如果文档错误,您可以向https://bugs.python.org提交错误报告。 – Pedro