将POP3客户端功能集成到C#应用程序中?
我需要一个基于服务器的组件定期访问POP3电子邮件框和检索电子邮件,Web应用程序。然后该服务需要处理,这将涉及到电子邮件:将POP3客户端功能集成到C#应用程序中?
- 验证电子邮件对一些业务规则(它包含在主题行中的有效参考,其中用户发送邮件等)
- 分析并保存任何附件盘
- 以电子邮件正文和附件的详细信息,并在数据库中创建一个新的项目
- 或更新了基准传入电子邮件主题行相匹配的现有项目
解决这个问题的最好方法是什么?我真的不想从头开始编写POP3客户端,但我需要能够自定义电子邮件的处理。理想情况下,我将能够插入一些组件,为我进行访问和检索,返回附件,正文,主题行等准备好供我处理的数组...
[更新:评价]
OK,所以我花了很多时间相当寻找到(主要是免费).NET POP3库,所以我想我会提供一些下面提到的那些简短评论和其他几个人:
- Pop3.net - 免费 - 工程确定,在所提供的功能方面非常基本的。这是非常简单,只是在POP3命令和一些base64编码,但它是非常简单的 - 可能是一个很好的介绍
- Pop3 Wizard - 商业/一些开源代码 - 无法获得此建立,缺少的DLL,我不会费心这个
- C#Mail - 免费供个人使用 - 效果不错,配备了哑剧解析器和SMTP客户端,但是意见是日语(没什么大不了),并没有使用SSL“开箱即用” - 我不得不改变SslStream构造后,它的工作没有问题
- OpenPOP - 免费 - 一直没有更新约5年,所以它的当前状态是.NET 1.0,不支持SSL但这是没问题解决 - 我只是取代了存在g流与SslStream和它的工作。附带Mime解析器。
免费的图书馆,我会去C#的邮件或OpenPOP。
我看了几个商业图书馆:Chillkat, Rebex,RemObjects,JMail.net。基于功能,价格和对公司的印象,我可能会去Rebex的,可能在未来,如果我的需求发生变化或者我遇到任何与C#邮件或OpenPOP的生产问题。
如果任何人的需求吧,这是更换SslStream构造函数,我用来启用SSL用C#邮件和OpenPOP:
SslStream stream = new SslStream(clientSocket.GetStream(), false,
delegate(object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors errors) { return true; });
有几个POP3客户端实现在codeproject.com左右。我没有评估他们,但也许你可以在那里找到你需要的东西。如果不是,我可以说POP3是一个相当简单的协议。如果您知道4-5个命令,您甚至可以用telnet读取您的POP3盒子。
实际上你只需要this命令,也许一些base64解码附件。而已。
我认为你低估了现实世界中多么棘手和多变的MIME。 – 2009-07-14 12:57:01
是的,你说对了,大声笑 – 2009-12-31 21:11:31
如果您不介意为组件付款,我们过去曾经在chilkat上取得过巨大成功。对于几百块钱,你会得到一个充满善意的图书馆。
看看我的开源应用BugTracker.NET在http://ifdefined.com/bugtrackernet.html的POP3集成。所有自由和开源的。最困难的部分,mime解析,由SharpMimeTools在BugTracker.NET中完成http://anmar.eu.org/projects/sharpmimetools/
显示我如何使用POP3和MIME逻辑的重要文件是POP3Client.cs和insert_bug.aspx。
DasBlog使用一个很好的(免费的) - 抓取源码包。我用过它(但我不记得是谁写的,而且我不在我的笔记本电脑上 - 我觉得Pavel L)?这不是完美的,它不会执行SSL,但它很好地工作,否则。
我制作了我自己的Mime解析器,并将它添加到CodePlex中,因为当涉及奇怪的编码或奇怪的附件组合时,我一直运行到未处理的异常中。 pop3客户端的实现很粗糙,只是为了测试目的,但是可以处理。 Mime解析器部分填充标准的MailMessage对象,以便您可以轻松地转发它。我可以根据要求扩展/改进它,但现在它可以满足我的需求。随时检查一下。
SslStream类的构造函数被修改并上传。 推荐使用版本没有问题。
如果您需要SSL来访问gmail ..以下是对OpenPOP.net库的一些修改,它提供了SSL支持。
OpenPop.net modified to include SSL support for accessing Gmail
你可能想在你的排名Mail.dll .NET mail component。 它支持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协议也支持。
请注意,这是我创建的商业产品。
您可以在这里下载:http://www.lesnikowski.com/mail
我的OpenPop.NET的主要开发者之一。我刚刚参加了这次审查,并且不得不提出一些关于OpenPop.NET现状的评论,因为审查似乎已经过时了。
OpenPop.NET重新开始活跃。 SSL已在半年前推出。该项目进行了重大重构,现在更加稳定和易于使用。当我接管这个项目时,它有很多错误,截至目前,我目前还不知道。已经实现了很多额外的功能,主要是在MIME解析器部分。该项目由单元测试支持,每次发现错误时,都会创建一个单元测试,以在修复它之前显示此错误。带有示例的accompanying website现在存在。还有其他更新,但我不想全部提及它们。
此外,OpenPop.NET的许可证已从LGPL更改为Public Domain(又名,没有限制)。我认为这是对商业用户的重大改进。
因为我必须自动化一些电子邮件处理的东西。我把OpenPop.net 我正在寻找我如何能与此库转发mailmessages和跨越这个惊人的功能来:http://hpop.sourceforge.net/documentation/OpenPop~OpenPop.Mime.Message.ToMailMessage.html
总结,我选择OpenPop.Net和建议吧!
最好的问候, JP
一个新的选项(截至2014年)是从Xamarin MailKit,可在MIT许可下。它解析来自磁盘的消息比OpenPOP.NET快25倍。它包括对IMAP,POP3和SMTP的支持,似乎非常快速和强大。
感谢您的更新并提供您的研究细节。 – 2008-12-08 14:06:40
+1;有一个非常相似的要求。感谢您的研究。 – tsilb 2008-12-30 16:55:37
一个小小的评论:我已经测试了几个提到的实现,并且必须使用来自http://anmar.eu.org/projects/sharpmimetools/files/daily/的最新日报才能正确解码MIME。 c#Mail无法正确解码非ascii,并且大多数其他人以utf8,q编码或其他细节失败。 – 2009-01-03 02:40:31