跳转到主要内容

MIMETools提供了用于DocumentTemplate的``dtml-mime``标签。

项目描述

https://github.com/zopefoundation/Products.MIMETools/actions/workflows/tests.yml/badge.svg https://coveralls.io/repos/github/zopefoundation/Products.MIMETools/badge.svg Current version on PyPI Supported Python versions

Products.MIMETools

目前,MIMETools产品的唯一功能是为DocumentTemplate发行版提供<dtml-mime> DTML标签。

<dtml-mime>标签用于构建MIME容器。 <dtml-mime>标签的语法是

<dtml-mime type="x" disposition="y" encode="z">
Contents of first part
<dtml-boundary type="x" disposition="y" encode="z">
Contents of second part
<dtml-boundary type="x" disposition="y" encode="z">
Contents of nth part
</dtml-mime>

标签之间的数据区域,称为块,将被编码为“encode”标签属性中指定的内容。如果没有指定编码,则默认为“base64”。有效的编码选项包括“base64”、“quoted-printable”和“7bit”。如果将“encode”属性设置为“7bit”,则不对块进行编码,并假定数据为有效的MIME格式。

如果未指定特定块的“disposition”属性,则不会在该块的MIME部分中包含“Content-Disposition:” MIME头。

整个MIME容器,从开头的“mime”标签到结尾,其“Content-Type:” MIME头被设置为“multipart/mixed”。

例如,以下DTML

<dtml-mime encode="7bit" type="text/plain">
This is the first part.
<dtml-boundary encode="base64" type="text/plain">
This is the second.
</dtml-mime>

渲染成以下文本

Content-Type: multipart/mixed;
    boundary="216.164.72.30.501.1550.923070182.795.22531"

--216.164.72.30.501.1550.923070182.795.22531
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

This is the first part.

--216.164.72.30.501.1550.923070182.795.22531
Content-Type: text/plain
Content-Transfer-Encoding: base64

VGhpcyBpcyB0aGUgc2Vjb25kLgo=

--216.164.72.30.501.1550.923070182.795.22531--

dtml-mime 标签与dtml-sendmail 标签结合使用特别有用。这允许Zope在电子邮件中发送附件。以下是一个示例。

创建一个名为“input”的DTML方法,代码如下

<dtml-var standard_html_header>
<form method="post" action="send" ENCTYPE="multipart/form-data">
<input type="file" name="afile"><br>
Send to:<input type="textbox" name="who"/><br/>
<input type="submit" value="Send"/>
</form>
<dtml-var standard_html_footer>

创建另一个名为“send”的DTML方法,代码如下

<dtml-var standard_html_header>
<dtml-sendmail smtphost="localhost">
From: michel@digicool.com
To: <dtml-var who>
<dtml-mime type="text/plain" encode="7bit">

Hi <dtml-var who>, someone sent you this attachment.

<dtml-boundary type="application/octet-stream" disposition="attachment"
encode="base64"><dtml-var "afile.read()"></dtml-mime>

</dtml-sendmail>

Mail with attachment was sent.
<dtml-var standard_html_footer>

请注意,“To:”头和dtml-mime 标签之间没有空行。如果在它们之间插入空行,则消息将不会被接收邮件阅读器解释为多部分。

还要注意,在dtml-boundary 标签和dtml-var 标签之间,或者dtml-var 标签的结尾和dtml-mime 标签的结尾之间没有换行。这很重要,如果你用换行符分隔标签,那么它们将被编码并包含在MIME部分中,这可能不是你想要的。

根据MIME规范,dtml-mime 标签可以任意嵌套在dtml-mime 标签中。

变更日志

4.0 (2023-02-01)

  • 删除对Python 2.7、3.5、3.6的支持。

3.3 (2022-12-16)

  • 修复针对Zope 4的测试中隐藏的buildout配置错误。

  • 添加对Python 3.10和3.11的支持。

3.2 (2021-03-16)

  • 添加对Python 3.9的支持。

3.1 (2020-02-11)

  • 修复了linting问题。

  • 将一些导入更改为防止DeprecationWarnings。

3.0 (2019-05-20)

  • 使用Python的email模块重新实现了功能。

  • 添加了对Python 3.5、3.6、3.7和3.8的支持。

  • 将文档转换为标准的dtml表示法。

  • 添加了tox测试配置。

  • 完整的linting。

  • 测试覆盖率提高到超过90%。

  • 与DocumentTemplate 3.x和Zope 4兼容。

2.13.0 (2010-07-10)

  • PEP8清理并添加了基本测试。

  • 作为独立软件包发布。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

Products.MIMETools-4.0.tar.gz (11.6 kB 查看散列值)

上传时间:

构建分发

Products.MIMETools-4.0-py3-none-any.whl (9.7 kB 查看哈希值)

上传时间 Python 3

由以下支持