建议.NET组件访问电子邮件收件箱

时间:2008-08-20 13:53:21

标签: .net email imap pop3

我被要求在C#中编写Windows服务以定期监视电子邮件收件箱,并将收到的任何邮件的详细信息插入到数据库表中。

我的直觉是通过POP3做到这一点,果然,谷歌搜索“.NET POP3组件”会产生无数(好的,146,000)结果。

以前是否有人做过类似的事情,你能推荐一个不会破坏银行的最佳组件(最多几百美元)吗?

使用IMAP而不是POP3会有什么好处吗?

11 个答案:

答案 0 :(得分:7)

使用IMAP协议,您可以访问子文件夹设置消息状态(看/看不见),也可以使用 IDLE 功能即时通知。

Mail.dll包含 POP3 IMAP SMTP 组件,其中包含 SSL 支持和强大的MIME解析器:

using(Imap imap = new Imap())
{
    imap.Connect("imap.server.com");    // or ConnectSSL for SSL
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.Search(Flag.Unseen);
    foreach (long uid in uids)
    {
        IMail mail = new MailBuilder()
            .CreateFromEml(imap.GetMessageByUID(uid));
        Console.WriteLine(mail.Subject);
    }
    imap.Close();
}

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

您可以在https://www.limilabs.com/mail

下载

答案 1 :(得分:6)

我在我的应用程序BugTracker.NET中使用免费和开源的SharpMimeTools。它非常可靠:

http://anmar.eu.org/projects/sharpmimetools/

查看文件POP3Client.cs,POP3Main.cs和insert_bug.aspx

答案 2 :(得分:4)

我推荐chilkat。它们具有非常稳定的组件,您可以为单个开发人员以99美元的价格购买他们的电子邮件组件。就个人而言,我认为使用整个组件包是一个更好的交易,因为它只有289美元,并附带许多有用的组件。我不会以任何方式与他们联系,虽然我可能听起来像我。

答案 3 :(得分:3)

我会推荐AdvancedIntellect。 POP3和IMAP(ASPNetPOP3和ASPNetIMAP)有组件。良好的质量和非常敏感的支持 - 我记得在周末收到我的问题的答复。

答案 4 :(得分:3)

您可以查看我们的Rebex Mail component。它包括 IMAP SMTP POP3 协议以及 S / MIME 解析器。

POP3没有“未读”消息的概念或搜索符合特定条件的消息。 POP3只会返回收件箱中的所有邮件。

使用IMAP,您可以指示IMAP服务器向您发送未读消息,自指定时间后到达的消息,来自特定用户的消息等。您无需将其全部下载到客户端并执行在那里过滤。

以下代码显示了如何使用Imap类从Rebex.Net.Imap服务器下载未读邮件。

// create client, connect and log in 
Imap client = new Imap();
client.Connect("imap.example.org");
client.Login("username", "password");

// select folder 
client.SelectFolder("Inbox");

// get message list - envelope headers 
ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen)
  ); 

// display info about each message 
Console.WriteLine("UID | From | To | Subject");
foreach (ImapMessageInfo message in messages)
{
    Console.WriteLine(
        "{0} | {1} | {2} | {3}",
        message.UniqueId,
        message.From,
        message.To,
        message.Subject);
}

// disconnect 
client.Disconnect();

以下组合多个搜索标准的示例。这将返回去年大于100KB的消息。

ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.Arrived(DateTime.Now.AddYears(-1), DateTime.Now),
     ImapSearchParameter.Size(1024 * 100, Int32.MaxValue)
  ); 

您可以从rebex.net/secure-mail.net/download.aspx

下载试用版

答案 5 :(得分:2)

如果您使用开源POP3实现或免费提供的内容,那么您将有权修改代码并按照所需方向进行扩展。一个快速的Google导致这个C#POP3 code from Code Project检索邮件。

有一些东西可以让你自己动手,或至少扩展它。

alt text

答案 6 :(得分:1)

Lumisoft是开源的,包括IMAP和POP客户端(以及其他内容)。我已经使用它们多年没有任何问题了。

答案 7 :(得分:0)

WCF怎么样?它是免费的。

如果您有Exchange服务器: http://msdn.microsoft.com/en-us/library/bb397812.aspx

pop3的一个例子: http://bartdesmet.net/blogs/bart/archive/2006/09/13/4417.aspx

答案 8 :(得分:0)

C#Mail的费用为0美元,但也是GNU GPL许可的,所以请确保没问题。

答案 9 :(得分:0)

您可以使用MailBee.NET对象执行此操作:http://www.afterlogic.com/products/net-email-components

虽然我建议确实使用IMAP,特别是因为它已提供此处提到的IDLE支持,您可以对POP3执行相同的操作。这两种方法都有一个简短的描述,以及IMAP IDLE场景的完整示例:

http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29

请注意,我隶属于AfterLogic,如果您需要任何帮助,我很乐意为您提供帮助,请在我们的网站上查看“请求支持”选项。

答案 10 :(得分:0)

IMAPX2是最好的。使用IMAP,您可以控制邮件服务器中的文件夹,这是您无法使用POP执行的操作。 IMAPX是一个可以查看的开源代码,可以免费使用。

IMAPX是直截了当且可靠的。