我需要做以下事情,我想知道是否有人做过类似的事情,如果有的话他们做了什么。
我需要编写一个程序来处理不同客户端的传入电子邮件,处理它们,然后根据电子邮件地址,执行某些操作(添加到数据库,回复等)。
让这更具挑战性的是电子邮件地址不是静态的,而是动态的。例如。电子邮件将是这样的。 dynamic-email1@dynamic-subdomain1.domain.com 。电子邮件按客户端使用动态子域进行分组,在此示例中,它将是“dynamic-subdomain1”。客户端将拥有自己的子域,并为其分配。每个客户端都可以在其子域下创建自己的电子邮件地址,并为该电子邮件分配事件。这些电子邮件地址和子域名可以随时更改,添加新邮件,删除旧邮件等等。
例如,如果收到电子邮件'dynamic-email1@dynamic-subdomain1.domain.com'的电子邮件,那么我需要在数据库中查找以找出哪个客户端是分配了'dynamic-subdomain1'子域,然后查看哪个事件映射到'dynamic-email1'的电子邮件地址,然后执行该事件。我已经进行了事件处理,我只是不确定如何将电子邮件地址映射到事件。
由于电子邮件地址是动态的,因此使用基于文件的配置文件来处理这将是一件非常痛苦的事情,而在数据库中查找会更好。我做了一些研究,发现一些项目做了类似但不完全相同的事情。我找到的最接近的是Zed Shaw的Lamson项目:http://lamsonproject.org
更多背景资料
问题:
感谢您的帮助。
更新: 我做了一些关于谷歌应用程序引擎建议的研究,它可能会工作,但我需要更改太多的东西,它会添加太多的移动部件。我还需要一个捕获所有电子邮件转发器,谁知道任何好的便宜的?我更喜欢部署在处理所有电子邮件的系统上。看起来人们在端口25上使用了postfix监听并将请求转发给lamson。这似乎是合理的,我将试一试,看看它是怎么回事。我会用我的结果更新。
更新2 : 我做了一些更多的研究,我发现有几个网站为我做了类似的事情,所以我接下来会看看它们。
答案 0 :(得分:1)
我在使用动态电子邮件地址的几个项目上做了一些工作,但从未同时使用动态子域。我对你的问题的看法:
我从未使用过Lamson,所以我不能对此发表评论。
我通常使用App Engine's API来接收和处理传入的消息,而且效果很好。您可以轻松地将每封收到的邮件转换为您自己服务器上的基本POST
请求,例如: To
,From
,Subject
和Message
字段,并使用标准django处理这些字段。
GAE电子邮件的一个缺点是必须使用*@yourappname.appspotmail.com
,但您可以通过为*@yourdomain.com
设置一个包罗万象的电子邮件转发器,将所有内容定向到secretaddress@yourappname.appspotmail.com
来解决这个问题。这样您就可以在自定义域上接收消息并使用GAE处理它们。
GAE的另一个问题/好处是使用Google的服务器而不是您自己的服务器(至少对于电子邮件位)。
对于子域问题,您可以尝试为MX
记录设置wildcard DNS,这(理论上)会将发送到任何子域的所有邮件定向到同一服务器。这样您就可以在所有子域上接收电子邮件(无论好坏,请注意垃圾邮件!)
答案 1 :(得分:0)
对于lamson,你有没有尝试过这样简单的事情:
@route("(address)@(subdomain).(host)", address=".+", subdomain="[^\.]+")
def START(message, address=None, subdomain=None, host=None):
....