关于 .NET 组件访问电子邮件收件箱的建议 [关闭]
题
我被要求用 C# 编写一个 Windows 服务来定期监视电子邮件收件箱并将收到的任何消息的详细信息插入数据库表中。
我的本能是通过 POP3 来完成此操作,果然,在 Google 上搜索“.NET POP3 组件”会产生无数(好吧,146,000 个)结果。
以前有人做过类似的事情吗?你能推荐一个不会破产的像样的组件(最多几百美元)吗?
使用 IMAP 而不是 POP3 有什么好处吗?
解决方案
我推荐 奇尔凯特. 。他们有相当稳定的组件,单个开发人员可以以低至 99 美元的价格获得他们的电子邮件组件。就我个人而言,我认为使用整套组件更划算,因为它只需 289 美元,并且附带许多有用的组件。我与他们没有任何关系,尽管我听起来可能是这样。
其他提示
通过 IMAP 协议您可以访问 子文件夹, , 和 设置消息状态 (见过/没见过),你也可以使用 闲置的 即时通知功能。
邮件.dll 包括 POP3, IMAP, 邮件传输协议 组件与 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
我在我的应用程序 BugTracker.NET 中使用免费开源的 SharpMimeTools。它非常可靠:
http://anmar.eu.org/projects/sharpmimetools/
请参阅文件 POP3Client.cs、POP3Main.cs 和 insert_bug.aspx
我会推荐 高级智力. 。有用于 POP3 和 IMAP 的组件(ASPNetPOP3 和 ASPNetIMAP)。良好的质量和非常积极的支持 - 我记得在周末收到了对我的问题的答复。
您可能想查看我们的 Rebex 邮件组件. 。这包括 IMAP, 邮件传输协议, 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
如果您使用开源 POP3 实现或免费提供的东西,那么您将有权修改代码并按需要的方向扩展它。快速 Google 后得到了这个 C# 来自 Code Project 的 POP3 代码 检索消息。
推出自己的产品或至少扩展它是有力量的。
鲁米软件 是开源的,包括 IMAP 和 POP 客户端(以及其他内容)。我已经使用它们很多年了,没有任何问题。
那么WCF呢?免费。
如果您有 Exchange 服务器:http://msdn.microsoft.com/en-us/library/bb397812.aspx
pop3 的一个例子:http://bartdesmet.net/blogs/bart/archive/2006/09/13/4417.aspx
C#Mail 的成本为 0 美元,但也获得了 GNU GPL 许可,因此请确保没问题。
您可以使用 MailBee.NET 对象来执行此操作: http://www.afterlogic.com/products/net-email-components
虽然我确实建议使用 IMAP,特别是因为它提供了此处提到的 IDLE 支持,但您也可以对 POP3 执行相同的操作。这里有对这两种方法的简要描述,以及 IMAP IDLE 场景的完整示例:
请注意,我隶属于 AfterLogic,如果您需要任何帮助,我将很乐意为您提供帮助,请查看我们网站上的“请求支持”选项。
IMAPX2 是最好的。使用 IMAP,您可以控制邮件服务器中的文件夹,而使用 POP 则无法做到这一点。IMAPX 是一个开放源代码,您可以查看并且可以免费使用。
IMAPX 直接且可靠。