我正在尝试设计一个能够捕获提交给服务器并处理它们的电子邮件的系统。处理可能意味着解析诸如IP地址,电子邮件正文和主题等元数据,并将这些细节提交给Web服务。
我想知道哪些软件(SMTP服务器或类似软件)可以与之集成,执行任意处理,或者哪些服务器支持转发到Web服务(具有排队和重试)开箱即用。 / p>
Exchange不是首选选项,因为我希望将其保留在实时服务器之外。
答案 0 :(得分:2)
最简单的方法是使用任何邮件服务器,只需通过IMAP或POP3或类似工具将邮件直接从系统上的电子邮件用户邮箱中提取出来即可。有些邮件服务器是在第三方访问时构建的,可以在新邮件到达时注册事件,因此您无需轮询新邮件。不同的邮件服务器具有不同的本机访问协议和API。 Exchange具有IMAP和Exchange Web服务(EWS),Domino具有C ++ / COM API,GroupWise是Web服务。所有这些都将支持某种默认的客户端访问协议,如IMAP和POP3。本机协议将提供更多功能(如通知),但出于您的目的,IMAP或POP3可能就足够了。
答案 1 :(得分:1)
有很多方法可以做到这一点。其中很多还取决于价格,客户和技术环境。
如果这是MS环境,并且成本是一个因素,那么您可以使用内置的IIS SMTP服务。 IIS SMTP服务最常用于发送电子邮件,但是,它可以配置为实际接受电子邮件。如果为域配置服务,则该域的所有传入电子邮件都将放在mailroot / drop目录中。它被放置为文本文件({guid} .eml格式)。
您可以使用Mime解析器来解析这些文件,然后执行您想要的任何业务规则。由于这是在文件系统级别完成的,因此您不必担心拦截任何网络调用。只需抓取一个文件,解析它,然后移动到下一个文件。然后,让您的应用程序休眠X秒,然后检查是否有任何新电子邮件进入。
PS:无耻的插件 - 您可以使用aspNetMime来解析这些文件,并提取数据。
答案 2 :(得分:0)
实现一个简单的lexing / parser来解析标头并查找特定的头信息可能是值得的。如果它是IP地址,您可以使用正则表达式解析器来逃避它。
理想情况下,您应该连接到存储电子邮件的服务器的POP3端口,并快速扫描信息,如果主题行或邮件包含指示它是电子邮件甚至IP的特定字符串在标题内的地址,然后您可以检索该电子邮件并对其进行处理,这是我认为电子邮件的最终/解析最初会在根据标准下拉之前完成的。
请记住,您不想删除不相关的电子邮件,那么您将如何处理它。
也许DotNetOpenMail可能有所帮助,因为它不一定会删除所有电子邮件......
希望这有帮助, 最好的祝福, 汤姆。