zope mailhost将邮件路由到其他邮件主机

collective.multimail的Python项目详细描述


https://secure.travis-ci.org/collective/collective.multimail.png

Introduction

允许您使用多个邮件主机。电子邮件按以下规则筛选 确定要向哪个邮件主机发送特定电子邮件。每个规则都适用 电子邮件标题的正则表达式,如“to”、“from”和“subject”。 可以配置脚本或视图来代替mailhost,以允许自定义 行为。

潜在用途包括:

  • 根据发件人使用不同的SMTP服务器;
  • 将特殊电子邮件地址扩展为多个发送呼叫;
  • 通过外部api(如twitter)发送
  • 添加附加标题或更改标准plone电子邮件的文本。

例如,如果您有一个规则链:

- header-match: {to: 'allsubscribers@notarealdomain'}
  action: 'send and stop'
  mailhost: '/sendtoall'

# Catch-all rule, uses the patched MailHost object.
- action: 'send and stop'
  mailhost: 'default'

还有一个python脚本sendtoall

def sendtoall(messageText, mto=None, mfrom=None, subject=None, encode=None, immediate=False, charset='utf8', msg_type=None):
    for email in context.getSubscribers():
        context.MailHost.send(messageText, email, mfrom, subject, encode, immediate, charset, msg_type)

您可以在contentrules中使用电子邮件地址allsubscribers@notarealdomain,或者 在plone的其他地方向订户数据库发送电子邮件。

Details

可以通过通用安装程序安装,也可以通过添加zmi来安装。一次多邮件主机 对象与普通的mailhost对象monkeypatch放在同一个文件夹中 to mailhost将允许multimail处理所有电子邮件发送。

Rule definition

规则链是规则定义的yaml列表。 规则定义可以包含:

标题匹配
用于“to”、“from”等标题的正则表达式字典。
动作
“发送并继续”、“发送并停止”或“停止”
邮件宿主
指向imailhost对象或可调用对象的可遍历路径。Callables需要支持 参数(messagetext、email、mfrom、subject、encode、immediate、charset、msg_type)。 路径是相对于multimailhost的,路径以zope根目录/start开始。

规则是自上而下评估的。

规则是通过ZMI制定的。

default是一个特殊的mailhost,它使用未筛选的原始mailhost对象。如果 您希望重新发送电子邮件并对其进行筛选,然后使用/MailHost

TODO

  • []用ploneformgen进行测试
  • []当电子邮件作为包含标题的文本(如pfg)发送时,处理匹配问题。
  • []能够禁用MonkeyPatch,因此可以单独使用
  • []脚本遍历周围的安全性

Contributors

  • 亚当·特雷,原作者
  • 迪伦·杰
  • 伊万·特奥

Changelog

1.0a6 (2014-01-17)

  • 切换到monkey补丁来解决被覆盖的问题 (DJAY)
  • 允许使用视图的普通python脚本。 (DJAY)
  • 当从PloneformGen或通过Acquisition调用时修复问题 (伊万特)
  • 添加匹配规则的测试 (伊万特)

1.0a4 (2013-05-29)

  • 首次发布 (阿特瑞)

1.0a1 (unreleased)

  • 初始版本 (阿特瑞)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用cucumberjvm执行java异步步骤   java通过Jackson2导出/导入JSON文件。9.7   java Tomcat在页面加载时给出500错误   将filereader合并到代码中的java问题   从GUI java将对象属性写入文件时发生swing错误   java简单程序,用于检查输入字符串是否为关键字(指定了关键字)   java如何在布局之间滑动时打开音频文件?   hibernate解析Java。lang.ClassCastException   java如何解决记录测试结果的Jenkins构建错误?   Java:在重写文件之前检查文件是否需要更新的最佳方法是什么?   mongodb在Java中重用数据库连接   java Hibernate(n+1)使用非k连接选择   java如何在Spring批处理中创建JSON文件读取器   java将MuPDF导入Android应用程序   字典我对Java中的多态性有疑问