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

时间:2020-03-05 18:41:07  来源:igfitidea点击:

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

我的直觉是通过POP3进行此操作,并且肯定地,对" .NET POP3组件"进行谷歌搜索会产生无数(可以,共146,000个)结果。

以前有人做过类似的事情吗,我们能推荐一个不会打折的体面组件吗(最高几百美元)?

使用IMAP而不是POP3是否有任何好处?

解决方案

回答

WCF呢?免费。

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

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

回答

我推荐chilkat。他们有相当稳定的组件,我们可以以单个开发人员的价格便宜到99美元获得他们的电子邮件组件。我个人认为,与整套组件一起使用比较划算,因为它仅售289美元,并附带许多有用的组件。我不以任何方式隶属于他们,尽管我听起来可能像是我。

回答

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

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

请参阅文件POP3Client.cs,POP3Main.cs和insert_bug.aspx

回答

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

回答

我会推荐AdvancedIntellect。有POP3和IMAP的组件(ASPNetPOP3和ASPNetIMAP)。优良的品质和快速响应的支持,我记得在周末收到我的问题的答复。

回答

如果我们使用开放源代码POP3实现或者免费提供的功能,则可以修改代码并按需要的方向进行扩展。一个快速的Google从Code Project中得到了这个CPOP3代码来检索消息。

可以自己滚动或者至少扩展它。

回答

我们可能需要检查我们的Rebex Mail组件。它包括IMAP,SMTP,POP3协议和S / MIME解析器。

" POP3"没有"未读"消息或者搜索符合特定条件的消息的概念。 POP3仅返回收件箱中的所有邮件。

使用" IMAP",我们可以指示IMAP服务器向我们发送未读消息,自指定时间以来到达的消息,来自特定用户的消息等。我们不必将其全部下载到客户端并在其中进行过滤。

以下代码显示了如何使用Rebex.Net.Imap类从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下载该试用版

回答

C#Mail的费用为$ 0,但也获得了GNU GPL的许可,因此请确保没有问题。

回答

使用IMAP协议,我们可以访问子文件夹并设置邮件状态(可见/不可见),还可以使用IDLE功能进行即时通知。

Mail.dll包括POP3,IMAP,具有SSL支持和强大的MIME解析器的SMTP组件:

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下载