我想在Python / Django中编写包含以下部分的HTML邮件:
结果:
我对这种结构进行了反向工程,以便在实践中使用:
+-------------------------------------------------------+
| multipart/mixed |
| |
| +-------------------------------------------------+ |
| | multipart/related | |
| | | |
| | +-------------------------------------------+ | |
| | | multipart/alternative | | |
| | | | | |
| | | +-------------------------------------+ | | |
| | | | text can contain [cid:logo.png] | | | |
| | | +-------------------------------------+ | | |
| | | | | |
| | | +-------------------------------------+ | | |
| | | | html can contain src="cid:logo.png" | | | |
| | | +-------------------------------------+ | | |
| | | | | |
| | +-------------------------------------------+ | |
| | | |
| | +-------------------------------------------+ | |
| | | image logo.png "inline" attachment | | |
| | +-------------------------------------------+ | |
| | | |
| +-------------------------------------------------+ |
| |
| +-------------------------------------------------+ |
| | pdf ("download" attachment, not inline) | |
| +-------------------------------------------------+ |
| |
+-------------------------------------------------------+
不幸的是,我只发现了这个复杂的解决方案:
from django.core.mail.message import EmailMessage
def create_email(subject='', body='', from_email=None, to=None, bcc=None,
connection=None, attachments=[], headers=None,
cc=None, reply_to=None, html_body='', html_inline_attachments=[]):
message = _create_email(subject=subject, body=body, from_email=from_email, to=to, bcc=bcc,
connection=connection, headers=headers, cc=cc, reply_to=reply_to,
html_body=html_body, html_inline_attachments=html_inline_attachments)
for attachment in attachments:
if isinstance(attachment, basestring):
message.attach_file(attachment)
continue
message.attach(attachment)
return message
def _create_email(subject='', body='', from_email=None, to=None, bcc=None,
connection=None, headers=None,
cc=None, reply_to=None, html_body='', html_inline_attachments=[]):
if not (body or html_body):
raise ValueError('Missing body or html_body!')
for address, type, name in [
(from_email, basestring, 'from_email'),
(to, list, 'to'),
(cc, list, 'cc'),
(bcc, list, 'bcc')]:
if address and not isinstance(address, type):
raise ValueError('"{}" must be a list! ({})'.format(name, address))
if body and not html_body:
if html_inline_attachments:
raise ValueError('"html_body" is missing!')
问题内容: 我们有一个基于Java的系统,该系统从数据库中读取数据,将各个数据字段与预设标签合并,然后将结果转换为with 。 在格式,它看起来是这样的: 现在,我正在寻找一种允许某些字段包含静态 HTML格式 内容的方法。此内容将通过我们的支持HTML编辑器生成(沿着线的东西,等),或者从外部粘贴。 我的计划是遵循此JavaWorld文章的配方: 用于将HTML格式的字符串转换为正确的XHTML
问题内容: 我正在尝试发送包含嵌入式gif图像的多部分/相关html电子邮件。该电子邮件是使用Oracle PL / SQL生成的。我的尝试失败了,图片显示为红色X(在Outlook 2007和yahoo邮件中) 我已经发送HTML电子邮件已有一段时间了,但是我现在的要求是在电子邮件中使用多个gif图像。我可以将它们存储在我们的一台Web服务器上并仅链接到它们,但是许多用户的电子邮件客户端不会自动
问题内容: 我遇到了一个问题:直到今天,我使用包含以下内容的标头使用PHP发送HTML邮件 现在,我添加了添加附件的功能。为此,我不得不将此行更改为 现在,使用,邮件的其余部分(即普通文本)将显示为文本/纯文本。我怎么能知道附件有效并且邮件文本仍然是HTML? 问题答案: 要发送带有附件的电子邮件,我们需要使用multipart / mixed MIME类型,该类型指定混合类型将包含在电子邮件中。
尝试发送带有pdf附件的电子邮件,尝试使用swickmailer,但没有成功,此代码使用zip但不使用PDF:( 邮件被发送罚款,我得到的邮件:但附件是不存在的,在meial有所有的bas64编码在电子邮件像: onatatent-Type: Application/octet-stream; name="media.pdf"Content-transver-Encode: base 64 Con
所有数据以文本格式发送,而不是作为附件的PDF格式。 内容类型:多部分/备用;边界=myapp--_myapp_内容类型:文本/普通;charset=UTF-8Content-Transfer-Encoding:7bit测试消息--myapp--_myapp_Content-Type:Application/pdf;name=myPdf。PDF内容处置:附件;filename=myPdf。PDF内
这似乎很难,而且 我的电子邮件内容是html格式的,所以我必须首先将RTF转换为html格式。