将静态文件中的图像添加到 Django 中的多部分电子邮件
Add image from static files to Multipart Email in Django
我正在尝试通过电子邮件发送徽标,并将其显示在电子邮件的 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 并通过安装在同一台机器上的 Postfix 发送邮件 Django 是 运行。
EmailMessage.attach
方法期望传递文件的内容而不是它的路径,您实际做的是将 static('myapp/images/logo.png')
返回的字符串附加到消息中。
改用 EmailMessage.attach_file
(EmailMessage reference)。
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
参数?)和多得多。我 advise/encourage 你阅读它的 github 页面 :-)。欢迎提出问题或添加功能请求!
yagmail可以通过pip安装获取:
pip install yagmail # Python 2
pip3 install yagmail # Python 3
我正在尝试通过电子邮件发送徽标,并将其显示在电子邮件的 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 并通过安装在同一台机器上的 Postfix 发送邮件 Django 是 运行。
EmailMessage.attach
方法期望传递文件的内容而不是它的路径,您实际做的是将 static('myapp/images/logo.png')
返回的字符串附加到消息中。
改用 EmailMessage.attach_file
(EmailMessage reference)。
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
参数?)和多得多。我 advise/encourage 你阅读它的 github 页面 :-)。欢迎提出问题或添加功能请求!
yagmail可以通过pip安装获取:
pip install yagmail # Python 2
pip3 install yagmail # Python 3