.NET组件访问电子邮件收件箱的建议
我被要求在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下载