Email 如何使用模板方法在Plone中发送带有附件的邮件?

Email 如何使用模板方法在Plone中发送带有附件的邮件?,email,plone,Email,Plone,我一直在读关于使用一些模板从Plone发送电子邮件的文章,到目前为止,它一直在工作 我的问题是:如何使用模板方法添加附件?这是我的解决方案,可能不是最好的: 在portal\u skin/custom中创建mime\u文件DTML方法: <dtml-mime type="text/text; charset=utf-8" encode="7bit"> <dtml-var "text"> <dtml-boundary type="application

我一直在读关于使用一些模板从Plone发送电子邮件的文章,到目前为止,它一直在工作


我的问题是:如何使用模板方法添加附件?

这是我的解决方案,可能不是最好的:

在portal\u skin/custom中创建mime\u文件DTML方法:

  <dtml-mime type="text/text; charset=utf-8" encode="7bit">

  <dtml-var "text">

  <dtml-boundary type="application/octet-stream" disposition="attachment" 
  filename_expr="nomefile"><dtml-var "file"></dtml-mime>
其中,_文件是文件的内容

灵感来自:


这是一个使用Python脚本的快速解决方案。

使用Python的电子邮件模块

示例:

合成的消息可以传递到context.MailHost(Zope的MTA)


在任何情况下,从Python级别生成和发送电子邮件都比使用旧的DTML sendmail facade更好……不要使用它。

MailHost.send命令同时使用Python(unicode)字符串和
email.Message
对象。这意味着您可以使用构造带有附件的适当MIME消息


标准库包括:;任何文本仍然可以通过模板生成,就像您链接的文档一样。

现代方法需要使用python库来构建邮件正文,以处理mime并使用attach创建正文。Pieters:我知道可以使用python电子邮件包,但我喜欢模板(*.pt)方法,因为我正在发送一些带有html标记的电子邮件,并且我想将电子邮件逻辑与演示分离:问题是我在pt文件上手动创建了所有标题。既然我在pt上设置了标题,我怎么能使用标准的电子邮件包和pt方法呢?您仍然可以使用message_from_string方法来创建电子邮件对象,以便在多部分邮件构造中使用。嗯,您认为我可以拥有message.pt和attachment.pt吗?对于每个附件,我将attachment.pt连接到呈现的邮件.pt?当我执行
mail\u template=portal.mail\u template\u id mail\u text=mail\u template
时,我收到一个unicode对象。什么定义了编码、我的系统和属性?我在发送非ascii电子邮件时遇到问题。。。
message = context.mime_file(file=a_file, text=message, nomefile='attach_name.pdf')
context.MailHost.send(message, mTo, mFrom, mSubj)