Python/Django mime使用边界的多部分电子邮件

2024-05-16 14:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django(使用python)中,如何构建如下所示的电子邮件:

我需要的是一封以以下内容开头的电子邮件:

Content-Type: multipart/alternative;
boundary="=_5f8686714d769f9476ce778798b84ff4"

边界是放置纯文本的位置:

^{pr2}$

之后我需要一个相关的内容类型:

Content-Type: multipart/related;
boundary="=_e49477d06c604958b9b2bc038628a26f"

边界是放置html的地方

--=_e49477d06c604958b9b2bc038628a26f 
Content-Type: text/html; charset="ISO-8859-1" 
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.= w3.org/TR/html4/loose.dtd"> <html style=3D"height: 100%"> <head>/head> <body></body> </html>
--=_e49477d06c604958b9b2bc038628a26f

最终会变成这样:

Received: (qmail 6116 invoked by uid 48); 16 Jul 2012 18:00:49 +0200
Date: 16 Jul 2012 18:00:49 +0200
To: my@email.nl
Subject: Something
MIME-Version: 1.0
From: Company <company@company.nl>

Content-Type: multipart/alternative;
    boundary="=_5f8686714d769f9476ce778798b84ff4"
Message-ID: <m79ghd.ezdd6g@company.nl>

--=_5f8686714d769f9476ce778798b84ff4
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit

This e-mail is in HTML-format. Click the following link: 

 http://www.company.nl/enews/7
--=_5f8686714d769f9476ce778798b84ff4

Content-Type: multipart/related;
    boundary="=_e49477d06c604958b9b2bc038628a26f"

--=_e49477d06c604958b9b2bc038628a26f
Content-Type: text/html; charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.=
w3.org/TR/html4/loose.dtd">
<html style=3D"height: 100%">
<head>/head>
<body></body>
</html>
--=_e49477d06c604958b9b2bc038628a26f

我用Django的EmailMessage(备选方案)python MimeMultipart尝试了这个方法,但是我无法按照正确的顺序得到它。在


Tags: texthtmltypenlbodyisocontenthead
2条回答

直接使用emailsmtplib模块。在

Django内置的电子邮件处理方法非常有限。在

如果您试图发送电子邮件的纯文本和HTML版本(其中纯文本版本仅指URL),那么EmailMultiAlternatives类对我来说似乎工作得很好。在

文档中示例的稍微修改版本:

from django.core.mail import EmailMultiAlternatives

subject, from_email, to = 'hello', 'from@example.com', 'to@example.com'
text_content = 'This e-mail is in HTML-format. Click the following link:\n\nhttp://www.company.nl/enews/7'
html_content = '<p>This is an <strong>HTML-format</strong> version.</p>'
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()

此电子邮件中的结果(使用console backend):

^{pr2}$

虽然它没有multipart/related内容类型,但它可以同时在纯文本(显示链接)和HTML客户端(显示HTML版本)上工作。在

相关问题 更多 >