2010-01-12 77 views
1

我试图设计一个系统,可以捕获提交给服务器并处理它们的电子邮件。处理可能意味着解析元数据,如IP地址,电子邮件正文和主题等,并将这些详细信息提交给Web服务。如何随意处理电子邮件?

我想知道什么软件(SMTP服务器或类似的)可以集成,执行任意处理,或哪些服务器支持转发到web服务(与排队和重试)开箱即用。

交换不是首选方式,因为我想保留那些活的服务器。

+0

您最终将在Web服务中处理数据的事实似乎与您的问题无关。我想从标题和标签中删除“网络服务”。 – 2010-01-12 01:00:02

回答

1

有很多方法可以做到这一点。很多这些还可能取决于价格,客户和技术环境。

如果这是一个MS环境,并且成本是一个因素,您可以这样做的一种方法是使用内置的IIS SMTP服务。 IIS SMTP服务最常用于发送电子邮件,但是,它可以配置为实际接受电子邮件。如果您为域配置服务,则该域的所有传入电子邮件都将放置在mailroot/drop目录中。它被放置为一个文本文件({guid} .eml格式)。

您可以使用Mime解析器来解析这些文件,然后执行您想要的任何业务规则。由于这是在文件系统级完成的,所以您不必担心拦截任何网络调用。只需抓住一个文件,解析它,然后移动到下一个文件。然后,让您的应用程序休眠X秒,然后检查是否有新电子邮件进入。

PS:无耻插件 - 您可以使用aspNetMime来解析这些文件并提取数据。

2

只需使用任意邮件服务器,并通过IMAP或POP3或类似方式直接从系统上的电子邮件用户邮箱中处理邮件来处理邮件可能是最简单的。一些邮件服务器是在第三方访问的基础上构建的,可以在新邮件上注册事件,因此您不必轮询新邮件。不同的邮件服务器有不同的本地访问协议和API。 Exchange具有IMAP和Exchange Web服务(EWS),Domino具有C++/COM API,GroupWise是一项Web服务。并且所有这些都将支持某种类型的默认客户端访问协议,如IMAP和POP3。本地协议将提供更多功能(如通知),但出于您的目的,IMAP或POP3可能已足够。

0

实现一个简单的lexing/parser来解析头文件并寻找特定头文件信息可能是值得的。如果它是一个IP地址,你可以通过使用正则表达式解析器来避开它。

理想情况下,您应该连接到存储电子邮件的服务器的POP3端口,并快速扫描信息,如果主题行或消息包含特定的字符串,表明它是电子邮件或甚至是电子邮件IP地址,然后您可以检索该电子邮件并对其进行处理,这是我认为在根据标准对电子邮件进行拉下之前最初完成电子邮件的解析/解析的地方。请记住,你不想拉下一个不相关的电子邮件,那么你将如何处理它。

也许DotNetOpenMail可能有帮助,因为它并不一定拉下所有电子邮件...

希望这有助于 最好的问候, 汤姆。