将POP3客户端function集成到C#应用程序中?

我有一个Web应用程序,需要一个基于服务器的组件来定期访问POP3邮箱和检索电子邮件。 该服务然后需要处理电子邮件将涉及:

  • 根据一些业务规则validation电子邮件(包含主题行中的有效参考,哪个用户发送邮件等)
  • 分析并保存任何附件到磁盘
  • 以电子邮件正文和附件详细信息,并在数据库中创build一个新的项目
  • 或者更新引用与传入电子邮件主题行匹配的现有项目

什么是最好的方法来处理这个? 我真的不想从头开始编写POP3客户端,但我需要能够自定义电子邮件的处理。 理想情况下,我将能够插入一些组件,为我做访问和检索,返回附件,正文,主题行等准备好我的处理数组…

[更新:评论]

好的,所以我花了相当长的时间来研究(主要是免费的).NET POP3库,所以我想我会简要回顾一下下面提到的一些和其他几个:

  • Pop3.net – free – works OK,非常基本的function提供。 这几乎只是POP3命令和一些base64编码,但它非常简单 – 可能是一个很好的介绍
  • Pop3向导 – 商业/一些开源代码 – 无法得到这个build立,缺less的DLL,我不会打扰与此
  • C#Mail – 免费供个人使用 – 效果很好,带有Mimeparsing器和SMTP客户端,但是这些评论是日文的(不是什么大不了的),而且它不适用于SSL“开箱即用” – 我不得不更改SslStream的构造函数后,它工作没有问题
  • OpenPOP – free – 大约5年没有更新,所以它的当前状态是.NET 1.0,不支持SSL,但这没有问题解决 – 我只是用SslStreamreplace现有的stream,它的工作。 来与Mime语法分析器。

免费的图书馆,我会去C#的邮件或OpenPOP的。

我看了几个商业图书馆: Chillkat , Rebex , RemObjects , JMail.net 。 根据公司的特性,价格和印象,我可能会selectRebex,如果我的要求发生变化,或者遇到了C#Mail或OpenPOP的生产问题,可能会在未来。

如果有人需要它,这是我用C#Mail和OpenPOP启用SSL的替代SslStream构造函数:

SslStream stream = new SslStream(clientSocket.GetStream(), false, delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors errors) { return true; }); 

我是OpenPop.NET的主要开发人员之一。 我刚刚参加了这次评估,不得不就目前的OpenPop.NET状况发表评论,因为评论似乎已经过时了。

OpenPop.NET又回到了积极的发展阶段。 SSL已经推出了半年之前。 该项目有一个重大的重构,现在更加稳定和易于使用。 当我接手这个项目的时候,它有很多的bug,到目前为止我还不知道。 已经实现了很多额外的function,主要是在MIMEparsing器部分。 该项目由unit testing支持,每发现一个错误,都会创build一个unit testing,在修复之前显示这个错误。 现在有一个附带示例的网站 。 还有其他更新,但我不想全部提及。

此外,OpenPop.NET的许可证已经从LGPL更改为公共领域 (别名,没有限制)。 我认为这是对商业用户的重大改进。

我最近为一个项目实施了OpenPop ,并对此感到满意。 它在锡上做了什么。 (而且是免费的)

SslStream类的构造函数被修改并上传。 推荐的版本没有问题使用。

C#Mail在Codeplex上可用,使用起来非常简单。

您可能希望在您的排名中包含Mail.dll .NET邮件组件 。 它具有SSL支持,Unicode和多国电子邮件支持:

 using(Pop3 pop3 = new Pop3()) { pop3.Connect("mail.host.com"); // Connect to server pop3.Login("user", "password"); // Login foreach(string uid in pop3.GetAll()) { IMail email = new MailBuilder() .CreateFromEml(pop3.GetMessageByUID(uid)); Console.WriteLine(email.Subject); } pop3.Close(true); } 

IMAP协议也被支持。

请注意,这是我创build的商业产品。

你可以在这里下载: http : //www.lesnikowski.com/mail

一个新的选项(截至2014年)是来自Xamarin的MailKit ,可以在MIT许可下获得。 它比OpenPOP.NET更快地parsing磁盘25倍的邮件。 它包括对IMAP,POP3和SMTP的支持,似乎非常快速和健壮。

Jmail.NET 。 不要看得更远。 请注意,免费版本不包括POP3。 你会想要采取标准版本(或更多)。 别担心,这不是很贵。

DasBlog使用一个好的(免费的) – 抓取源码包。 我用过它(但是我不记得是谁写的,我不在笔记本电脑上 – 帕维尔·李认为?)。 这不是完美的,它不会做SSL,但它很好地工作,否则。

http://ifdefined.com/bugtrackernet.html的开源应用程序BugTracker.NET中查看POP3集成。; 所有自由和开源的。 最难的部分是mimeparsing,由SharpMimeTools在BugTracker.NET中完成,url为http://anmar.eu.org/projects/sharpmimetools/

显示我如何使用POP3和MIME逻辑的重要文件是POP3Client.cs和insert_bug.aspx。

我做了我自己的Mimeparsing器,并将其添加到CodePlex,因为当涉及奇怪的编码或怪异的附件组合时,我一直运行到未处理的exception。 pop3客户端的实现是粗糙的,只是为了testing的目的,但处理好。 Mimeparsing器部分填充标准的MailMessage对象,以便您可以轻松地转发它。 我可以根据要求进行扩展/改进,但现在它可以满足我的需求。 随意检查出来。

http://www.codeplex.com/mimeParser

Lumisoft是开源的,包括一个POP客户端(其他东西)。 它已经存在很多年了,非常稳定。

如果你需要SSL来访问gmail ..这是对OpenPOP.net库的一些修改,使它支持SSL。

修改OpenPop.net以包含访问Gmail的SSL支持

在codeproject.com上有几个POP3客户端实现。 我没有评估他们,但也许你可以find你需要的东西。 如果没有,我可以说POP3是一个相当简单的协议。 如果您知道4-5个命令,您甚至可以用telnet读取您的POP3文件夹。

你实际上只需要这个命令,也许一些base64解码附件。 而已。

由于我不得不自动化一些电子邮件处理的东西。 我采取OpenPop.net我正在寻找如何可以转发mailmessages与这个库,并遇到这个惊人的function: http ://hpop.sourceforge.net/documentation/OpenPop~OpenPop.Mime.Message.ToMailMessage.html

总结一下,我select了OpenPop.Net并推荐它!

最好的问候,JP

如果您不介意为组件付款,那么我们过去曾经在奇尔卡特取得了巨大的成功。 对于几百块钱,你会得到一个充满善意的图书馆。