我被要求在C#中编写Windows服务以定期监视电子邮件收件箱,并将收到的任何邮件的详细信息插入到数据库表中。
我的直觉是通过POP3做到这一点,果然,谷歌搜索“.NET POP3组件”会产生无数(好的,146,000)结果。
以前是否有人做过类似的事情,你能推荐一个不会破坏银行的最佳组件(最多几百美元)吗?
使用IMAP而不是POP3会有什么好处吗?
答案 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();
}
请注意,这是我创建的商业产品。
下载答案 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)
);
下载试用版
答案 5 :(得分:2)
如果您使用开源POP3实现或免费提供的内容,那么您将有权修改代码并按照所需方向进行扩展。一个快速的Google导致这个C#POP3 code from Code Project检索邮件。
有一些东西可以让你自己动手,或至少扩展它。
答案 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场景的完整示例:
请注意,我隶属于AfterLogic,如果您需要任何帮助,我很乐意为您提供帮助,请在我们的网站上查看“请求支持”选项。
答案 10 :(得分:0)
IMAPX2是最好的。使用IMAP,您可以控制邮件服务器中的文件夹,这是您无法使用POP执行的操作。 IMAPX是一个可以查看的开源代码,可以免费使用。
IMAPX是直截了当且可靠的。