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

时间:2008-10-25 13:09:58

标签: .net pop3 review

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

  • 根据某些业务规则验证电子邮件(它是否包含主题行中的有效引用,用户发送邮件等)。
  • 分析并保存任何磁盘附件
  • 获取电子邮件正文和附件详细信息,并在数据库中创建新项目
  • 或更新引用与传入电子邮件主题行匹配的现有项目

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

[更新:评论]

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

  • Pop3.net - 免费 - 工作正常,在提供的功能方面非常基础。这几乎只是POP3命令和一些base64编码,但它非常直接 - 可能是一个很好的介绍
  • Pop3 Wizard - 商业/一些开源代码 - 无法构建,丢失DLL,我不打扰这个
  • C#Mail - 免费供个人使用 - 效果很好,有Mime解析器和SMTP客户端,但是评论是日文(不是很大),它不能与SSL一起使用开箱即用' - 我必须更改SslStream构造函数,之后它没有问题
  • OpenPOP - 免费 - 大约5年没有更新,所以它的当前状态是.NET 1.0,不支持SSL,但是没有问题要解决 - 我只是用一个替换现有的流SslStream和它一起工作。附带Mime解析器。

在免费图书馆中,我会选择C#Mail或OpenPOP。

我查看了一些商业图书馆:ChillkatRebexRemObjectsJMail.net。基于公司的功能,价格和印象,我可能会选择Rebex,如果我的要求发生变化,或者我遇到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; });

15 个答案:

答案 0 :(得分:28)

我是OpenPop.NET的主要开发者之一。我刚刚对这篇评论感到失望,并且不得不对OpenPop.NET的当前状态发表一些评论,因为该评论似乎已经过时了。

OpenPop.NET重新进入积极开发阶段。 SSL已经推出半年了。该项目进行了重大的重构,现在更稳定,更易于使用。当我接手这个项目时,它有很多错误,到目前为止我目前都不知道。已经实现了许多额外的功能,主要是在MIME解析器部分。该项目由单元测试支持,每次发现错误时,都会创建一个单元测试,以在修复之前显示此错误。现在存在一个带有示例的accompanying website。还有其他更新,但我不想全部提及。

此外,OpenPop.NET的许可证已从LGPL更改为Public Domain(也就是说,没有限制)。我认为这是商业用户的一项重大改进。

答案 1 :(得分:7)

我最近为一个项目实施了OpenPop,并对此感到满意。它完成它在锡上的说法。 (它是免费的。)

答案 2 :(得分:6)

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

答案 3 :(得分:2)

C# Mail可在Codeplex上使用,并且非常易于使用。

答案 4 :(得分:2)

您可能希望在排名中加入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

答案 5 :(得分:2)

新选项(截至2014年)是来自Xamarin的MailKit,可在MIT许可下获得。它比OpenPOP.NET更快地解析来自磁盘25x的消息。它包括对IMAP,POP3和SMTP的支持,并且似乎非常快速和强大。

答案 6 :(得分:1)

在codeproject.com上有几个POP3客户端实现。我没有对它们进行评估,但也许你可以找到你需要的东西。如果没有,我可以说POP3是一个非常简单的协议。如果您知道4-5个命令,甚至可以使用telnet读取POP3框。

您实际上只需要this命令,也可能需要对附件进行一些base64解码。就是这样。

答案 7 :(得分:1)

Jmail.NET。不要再看了。请注意,免费版本不包括POP3。您需要使用标准版(或更多版)。别担心,这不贵。

答案 8 :(得分:1)

http://ifdefined.com/bugtrackernet.html处查看我的开源应用程序BugTracker.NET中的POP3集成。所有免费和开源。最难的部分,即mime解析,由SharpMimeTools在http://anmar.eu.org/projects/sharpmimetools/

在BugTracker.NET中完成

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

答案 9 :(得分:1)

DasBlog使用一个好的(和免费的) - 抓住源包。我已经习惯了(但我不记得是谁写的,我不在我的笔记本电脑上 - 我觉得Pavel L?)。它不是完美的,它不会做SSL,但它的效果很好。

答案 10 :(得分:1)

我制作了自己的Mime解析器并将其添加到CodePlex中,因为当涉及奇怪的编码和奇怪的附件组合时,我一直遇到其他未处理的异常。 pop3客户端实现很粗糙,只是出于测试目的,但处理正常。 Mime解析器部分填充标准的MailMessage对象,以便您可以轻松转发它。我可以根据要求扩展/改进它,但是现在它可以满足我的需求。请随意查看。

http://www.codeplex.com/mimeParser

答案 11 :(得分:1)

Lumisoft是开源的,包括POP客户端(以及其他内容)。它已存在多年,非常稳定。

答案 12 :(得分:1)

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

OpenPop.net modified to include SSL support for accessing Gmail

答案 13 :(得分:1)

因为我必须自动执行某些电子邮件处理。我参加了OpenPop.net 我正在搜索如何使用此库转发mailmessages并遇到这个惊人的功能:http://hpop.sourceforge.net/documentation/OpenPop~OpenPop.Mime.Message.ToMailMessage.html

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

最好的问候, JP

答案 14 :(得分:0)

如果你不介意支付一个组件,我们过去在chilkat上取得了很大的成功。只需几百美元就可以获得一个充满善良的图书馆。