我有一个 Web 应用程序,它需要基于服务器的组件来定期访问 POP3 邮箱和检索电子邮件。然后,该服务需要处理涉及以下内容的电子邮件:
- 根据某些业务规则验证电子邮件(它是否在主题行中包含有效的引用、发送邮件的用户等)
- 分析任何附件并将其保存到磁盘
- 获取电子邮件正文和附件详细信息并在数据库中创建一个新项目
- 或更新引用与传入电子邮件主题行匹配的现有项目
解决这个问题的最佳方法是什么?我真的不想从头开始编写 POP3 客户端,但我需要能够自定义电子邮件的处理。理想情况下,我将能够插入一些为我进行访问和检索的组件,返回附件数组、正文、主题行等,以供我处理......
[更新:评论]
好的,所以我花了相当多的时间研究(主要是免费的).NET POP3 库,所以我想对下面提到的一些库和其他一些库进行简短的回顾:
- Pop3.net - 免费 - 工作正常,就提供的功能而言非常基本。这几乎只是 POP3 命令和一些 base64 编码,但它非常简单 - 可能是一个很好的介绍
- Pop3 向导- 商业/一些开源代码 - 无法构建,缺少 DLL,我不会为此烦恼
- C#Mail - 免费供个人使用 - 运行良好,附带 Mime 解析器和 SMTP 客户端,但是评论是日文的(没什么大不了的),它不适用于 SSL '开箱即用' - 我不得不更改 SslStream 构造函数,之后它没有问题
- OpenPOP - 免费 - 大约 5 年没有更新了,所以它的当前状态是 .NET 1.0,不支持 SSL,但这没有问题要解决 - 我只是用 SslStream 替换了现有的流并且它工作。附带 Mime 解析器。
在免费库中,我会选择 C#Mail 或 OpenPOP。
我查看了一些商业库:Chillkat、Rebex、RemObjects、JMail.net。根据公司的功能、价格和印象,我可能会选择 Rebex,如果我的需求发生变化或者我遇到 C#Mail 或 OpenPOP 的生产问题,我可能会选择 Rebex。
如果有人需要,这是我用来使用 C#Mail 和 OpenPOP 启用 SSL 的替代 SslStream 构造函数:
SslStream stream = new SslStream(clientSocket.GetStream(), false,
delegate(object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors errors) { return true; });