我正在寻找一种方法来监控GMail收件箱中的新电子邮件。但是,我想避免每隔几分钟检查一次,我正在寻找某种实时通知。我注意到Outlook(以及其他支持IMAP的客户端)会在有新电子邮件时立即显示,但遗憾的是所有.NET IMAP库似乎都缺少此功能。
是否有人知道具有此功能的IMAP库?或者是否有另一种方法可以在不进行短期轮询的情况下立即通知新消息?
答案 0 :(得分:8)
您需要处理IMAP IDLE。
这会在新邮件到达时通知您,而不会进行持续轮询(这很糟糕)。
一个非常好的商业.NET IMAP库是MailBee.Net。我曾经将它用于一个小项目,它似乎处理得很好,并且相当容易使用。可能还有其他人 - 只需在您的库中搜索发送IDLE命令或IDLE命令处理,您就可能找到一些东西。
答案 1 :(得分:3)
Mail.dll支持IDLE。 这是简化的样本:
using (Imap client = new Imap())
{
client.ConnectSSL("imap.server.com");
client.Login("user@server.com", "password");
FolderStatus folderStatus = client.SelectInbox();
Console.WriteLine("Total message count: {0}",
folderStatus.MessageCount);
while(true)
{
FolderStatus currentStatus = client.Idle();
Console.WriteLine("Total message count: {0}",
currentStatus.MessageCount);
foreach(long uid in client.SearchFlag(Flag.Unseen))
{
IMail email = new MailBuilder().CreateFromEml(
client.GetHeadersByUID(uid));
Console.WriteLine(email.Subject);
}
}
client.Close();
}
您可以在http://www.lesnikowski.com/mail/
下载Mail.dll另请查看我的blog for samples。
请注意,Mail.dll是我创建的商业产品。
@Queops
以下是来自2个在线防病毒扫描程序的报告:
请注意,VirusTotal正在使用Symantec扫描仪。
答案 2 :(得分:1)
尝试使用免费的.NET库来访问IMAP服务器S22.Imap,并支持IDLE