Zope sendmail
项目描述
zope.sendmail
zope.sendmail是一个用于从Zope 3应用程序发送电子邮件的包。从Zope 3应用程序发送电子邮件的工作方式如下
Zope 3应用程序定位一个邮件投递实用程序(IMailDelivery)并向其提供一条消息。它获得一个唯一的消息ID,因此可以通过订阅IMailEvent事件来跟踪该消息。
该实用程序向事务系统注册以确保只有在事务成功提交时才发送消息。(其他方面,这避免了在ConflictErrors上的重复消息。)
如果投递实用程序是IQueuedMailDelivery,它将消息放入队列(文件系统中的Maildir邮箱)。一个独立的过程或线程(IMailQueueProcessor)监视队列并异步发送消息。由于队列位于文件系统中,它可以在Zope重启或崩溃后继续存在,邮件不会丢失。队列处理器可以实现批量处理以保持服务器负载低。
如果投递工具是 IDirectMailDelivery,则在事务提交期间它会同步发送消息。这并不是一个好主意,因为它会让用户等待。请注意,事务提交不能失败,但这不是问题,因为邮件投递问题会触发一个事件而不是抛出异常。
然而,存在问题——在事务提交阶段发送事件会导致未知代码执行。在提交此事务后,应该有一种方法来启动一个新的事务以处理事件。
IMailQueueProcessor 或 IDirectMailDelivery 实际上通过使用封装投递过程的邮件发送器(IMailer)组件来发送消息。目前只有一个邮件发送器
ISMTPMailer 使用 SMTP 将所有消息发送到中继主机。
变更
6.2 (2024-03-21)
将隐式_tls选项添加到邮件发送器,如果设置为True,SMTP连接将使用smtplib.SMTP_SSL并从开始使用SSL启动连接。(见 RFC8314)
6.1 (2024-02-07)
通过避免硬编码行结束符来修复SMTP协议互操作性。(见 https://www.rfc-editor.org/rfc/rfc2821#section-2.3.7)
从3.13a3开始添加对Python 3.13的初步支持。
添加对Python 3.12的支持。
6.0 (2023-08-22)
停止支持Python 2.7、3.5和3.6。
添加对Python 3.11的支持。
5.3 (2022-10-06)
添加对Python 3.10的支持。
不要尝试向空地址发送队列中的电子邮件(#45)。
5.2 (2021-01-18)
5.1 (2020-07-31)
再次使用 pywin32,而不是使用名为 pypiwin32 的同时过时的分支。为使用buildout的安装添加一些信息。(#30)
支持 bytes 消息;始终使用“text”类型(即Python 3中的str,Python 2中的unicode)将消息转换为bytes,通过utf-8编码。修复Products.MailHost#30的先决条件。
5.0 (2019-04-03)
停止支持Python 3.4。
添加对Python 3.8a3的支持。
修复Python 3中MailDir的text/bytes问题(#24)
4.2.1 (2019-02-07)
修复Python 3上的SMTP身份验证。见问题16。
4.2 (2018-10-10)
添加对Python 3.7的支持。
4.1.0 (2017-09-02)
将数据管理器的排序键更改为字符串,这修复了Python 3中字符串和整数不可排序的问题。当使用具有字符串排序键的其他数据管理器时,这将会发生。
添加对Python 3.5和3.6的支持。
停止支持Python 2.6和3.3。
在Windows上明确声明对pywin32的依赖。
用标准errno模块的等效项替换硬编码的常量。
修复Python 3上的SSL支持。见问题9。
实现100%的测试覆盖率,并通过tox.ini和Travis CI维护。
将已废弃的依赖项optparse替换为等效的argparse。帮助信息已更改,错误通常更清晰。现在指定不存在的--config路径将导致错误,而不是静默忽略。
修复SMTPMailer发送多条消息的问题。现在它会在需要时重新连接到SMTP服务器。之前它每次发送后都会关闭连接,因此只能发送一条消息。这也使得SMTPMailer线程安全。请参阅问题1。
4.0.1 (2014-12-29)
增加对PyPy3的支持。
4.0.0 (2014-12-20)
增加对Travis-CI上支持的Python版本的测试支持。
删除测试中使用的zope.testrunner。
删除对six的依赖。
将doctests替换为等效的unittests。
4.0.0a2 (2013-02-26)
修复许可证Trove分类器。
4.0.0a1 (2013-02-25)
增加对Python 3.3的支持。
删除事件化石(接口zope.sendmail.interfaces.IMailSent和zope.sendmail.interfaces.IMailError,以及zope.sendmail.events模块和相关测试)。这些事件从未发出,即使它们被发出,由于两阶段提交,也无法安全使用。https://bugs.launchpad.net/zope3/+bug/177739
将已弃用的zope.interface.classProvides用法替换为等效的zope.interface.provider装饰器。
将已弃用的zope.interface.implements用法替换为等效的zope.interface.implementer装饰器。
停止对Python 2.4和2.5的支持。
向Mailer实现添加投票方法,以便它们可以在知道不安全的情况下终止事务。
防止邮件投递中的致命错误导致潜在的数据库损坏。
添加未声明但需要的测试依赖项zope.component [test]。
添加对Unicode用户名和密码的处理,将它们编码为UTF-8。修复https://bugs.launchpad.net/zope.sendmail/+bug/597143
给后台队列处理线程命名。
在打印帮助信息的zope-sendmail --config中记录zope-sendmail --help的ini文件密钥。还重写了命令行解析,使用optparse(而不是argparse,因为Python 2.6仍然受到支持)。
3.7.5 (2012-05-23)
确保‘queuedDelivery’指令与‘directDelivery’指令具有相同的区分符(它们是互斥的)。https://bugs.launchpad.net/zope.sendmail/+bug/191143
避免在SMTP“拒绝接收者”错误后重新排队消息。https://bugs.launchpad.net/zope.sendmail/+bug/1003288
3.7.4 (2010-10-01)
处理Unicode用户名和密码,将它们编码为UTF-8。修复https://bugs.launchpad.net/zope.sendmail/+bug/597143
3.7.3 (2010-09-25)
添加未声明但需要的测试依赖项zope.component [test]。
3.7.2 (2010-04-30)
删除不再需要的测试依赖项zope.testing。
队列的Maildir存储现在可以处理传递给消息或从/到地址的Unicode(从repoze.sendmail回滚更改)。
测试使用stdlib doctest而不是zope.testing.doctest。
3.7.1 (2010-01-13)
在zope.sendmail.delivery中向后兼容导入zope.sendmail.queue.QueueProcessorThread。
3.7.0 (2010-01-12)
删除对zope.security的依赖:安全支持是可选的,并且只有当zope.security包可用时才可用。此更改与在zope.component 3.8.0中引入的可选安全支持类似,实际上它使用相同的辅助工具。
按修改时间对zope.sendmail.maildir中的消息进行排序,以便在队列处理期间先发送较早的消息。
向queuedDelivery ZCML指令添加新参数processorThread:如果为False,则不启动QueueProcessorThread,因此必须由独立进程处理队列;对于b/c默认为True。
提供一个控制台脚本zope-sendmail,用于在processorThread为False时处理投递队列。控制台脚本可以一次性处理队列中的消息,或者以“守护进程”模式运行。
3.6.1 (2009-11-16)
依赖于 zope.component >= 3.8.0,它支持 zope.component.zcml.proxify 的新语义,这是 zope.sendmail.zcml 所需要的。
3.6.0 (2009-09-14)
使用简单的词汇工厂函数,而不是从之前版本中的 zope.app.component 复制的自定义 UtilityTerm 和 UtilityVocabulary 类。
依赖于 transaction 包,而不是 ZODB3。
删除 zcml slugs 和与 zpkg 相关的文件。
解决与 Python >=2.5.1 一起使用时的问题。请参阅 https://bugs.edge.launchpad.net/zope.sendmail/+bug/413335 。
3.5.1 (2009-01-26)
从 zope.app.component 复制 UtilityTerm 和 UtilityVocabulary 的实现,以避免依赖关系。
解决 smtp 退出失败时的问题,邮件被认为未投递,而仅仅是退出失败。
3.5.0 (2008-07-05)
最终版本(与 3.5.0b2 相同)
3.5.0b2(2007-12-19)
如果 SMTP 服务器拒绝一条消息(例如,当发送者或收件人地址格式不正确时),该电子邮件将永远留在队列中(https://bugs.launchpad.net/zope3/+bug/157104)。
3.5.0b1(2007-11-08)
添加 README.txt
现在可以与不实现 EHLO 的服务器通信
修复导致创建非常长文件名的错误
修复 https://bugs.launchpad.net/zope3/+bug/157104:将导致 5xx 服务器响应的邮件移开。
3.5.0a2(2007-10-23)
清理测试中提供的伪造 SMTP 连接类中的 does_esmtp。
如果 QueueProcessorThread 在发送消息时被要求停止,则在发送当前消息后停止;之前如果有许多许多消息要发送,线程可能会停留相当长的时间。
3.5.0a1(2007-10-23)
QueueProcessorThread 现在接受一个可选参数 interval,用于定义处理邮件队列的频率(默认为 3 秒)
现在可以由多个 QueueProcessorThreads(在同一进程或多个进程中)从单个 maildir 发送消息,而不会发送重复的消息。
3.4.0 (2007-08-20)
错误修复:不要在每个事务提交时为要发送的每封电子邮件消息保留打开的文件。现在尝试在单个事务中发送许多电子邮件的人将不会耗尽文件描述符。
3.4.0a1(2007-04-22)
作为独立项目首次发布,对应于 Zope 3.4.0a1 中的 zope.sendmail。
项目详情
下载文件
为您的平台下载文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
构建发行版
zope.sendmail-6.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bc7626be0b05168ccbfa4e7a6548775953bed80025e543fab3115094f30d3b45 |
|
MD5 | aceb2ff8e09e4a20273c8a5d9eacae2c |
|
BLAKE2b-256 | bd811023bc85ff32cf57a517a265a9963a906f47a7322b4b6442294a817afbc6 |
zope.sendmail-6.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 75618a369ec7c13a9b446fdbf3df46788fb9651bd5f1fea9cc8403307f41a416 |
|
MD5 | 6dd5c5888a92df16bb27056e050af1f6 |
|
BLAKE2b-256 | 111034bd8adcf944fbb591bb651facf1ef4a1ae9c2e3a12224096821769b4c4f |