我正在使用 EmailMultiAlternatives 类通过 django 发送文本和 html 邮件。在使用一些虚拟代码进行测试时,我想添加带有一些文本的图像。
msg = EmailMultiAlternatives('My subject','some text here', 'from@domain.com', ['to@my_domain.com'])
msg.attach_alternative('<p>here is what I was talking about</p> <img src="logo.png" alt="logo_here" /> <div>You see???</div>', 'text/html')
msg.attach_file('/var/my_site/static/images/logo.png')
msg.send()
问题是在电子邮件客户端上,图像没有显示......
查看原始电子邮件,我发现了这一点:
--===============1013820581535380480==
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
<p>here is what I was talking about</p> <img src=3D"logo.png" alt=3D"logo_h=
ere" /> <div>You see???</div>
--===============1013820581535380480==--
有人知道我做错了什么吗?
谢谢!
编辑:我可以设法将图像嵌入到 html 邮件中。似乎 EmailMultiAlternatives 有一个可以接受 MimeImage 对象的附加方法。实际上它可以接受任何从 MimeBase 继承的东西。
fp = open('test.jpg', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
mimeImage = MimeImage(fp.read())
mimeImage.add_header('Content-ID', '<logo.png>')
msg.attach(mimeImage)
msg.send()