我正在尝试使用电子邮件发送徽标,并将其显示在电子邮件的HTML部分中。我正在构建我的电子邮件:
mail_subject = _("Subject of email %s" %
self.get_company_display())
from_email = "test@test.com"
message = EmailMultiAlternatives(mail_subject, mail_txt, from_email,
['destination@email.com'])
message.attach_alternative(mail_html, 'text/html')
message.attach('logo.png', static('myapp/images/logo.png'))
message.send()
在我的邮件模板中,我有:
<img src="cid:logo.png">
我收到了电子邮件,但图片没有显示在电子邮件中。事实上,该电子邮件似乎没有将图像作为附件。
使用Python 3.4,Django 1.8.4并通过安装在Django运行的同一台机器上的Postfix发送邮件。
答案 0 :(得分:2)
EmailMessage.attach
方法期望传递文件的内容而不是其路径,您实际在做的是将static('myapp/images/logo.png')
返回的字符串附加到消息。
改为使用EmailMessage.attach_file
(EmailMessage reference)。
答案 1 :(得分:-1)
yagmail(我是开发人员)的目的是让发送电子邮件变得非常简单,尤其是HTML或附件需求。
请尝试以下代码:
import yagmail
yag = yagmail.SMTP(from_add, password) # add host="" and port=
contents = ['See my attachment below', '/home/static/images/logo.png']
yag.send(contents = contents)
请注意这里的魔力:contents
是一个列表,其中将自动加载等于文件路径的项目,mimetype猜测并附加。
还有更多魔术,例如易于嵌入图像,无密码脚本,无用户名脚本,简单别名,智能默认值(请注意我省略了to
和subject
参数?)以及更多。我建议/鼓励您阅读github页面:-)。随意提出问题或添加功能请求!
您可以使用pip来安装yagmail:
pip install yagmail # Python 2
pip3 install yagmail # Python 3