我正在寻找一种方法来监视 GMail 收件箱中的新电子邮件。但是,我想避免每隔几分钟检查一次,我正在寻找某种实时通知。我注意到 Outlook(和其他支持 IMAP 的客户端)在有新电子邮件时会立即显示,但不幸的是,所有 .NET IMAP 库似乎都缺少此功能。
有谁知道具有此功能的 IMAP 库?还是有另一种方法可以在不进行短期轮询的情况下立即通知新消息?
我正在寻找一种方法来监视 GMail 收件箱中的新电子邮件。但是,我想避免每隔几分钟检查一次,我正在寻找某种实时通知。我注意到 Outlook(和其他支持 IMAP 的客户端)在有新电子邮件时会立即显示,但不幸的是,所有 .NET IMAP 库似乎都缺少此功能。
有谁知道具有此功能的 IMAP 库?还是有另一种方法可以在不进行短期轮询的情况下立即通知新消息?
您需要处理IMAP IDLE。
这将在新消息到达时通知您,而无需不断轮询(这很糟糕)。
MailBee.Net是一个非常好的商业 .NET IMAP 库。不久前我将它用于一个小项目,它似乎处理得很好,并且相当容易使用。可能还有其他的——只要在你的库中搜索发送 IDLE 命令或 IDLE 命令处理,你可能会找到一些东西。
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();
}
您可以在以下网址下载 Mail.dll:http: //www.lesnikowski.com/mail/
另请查看我的博客以获取示例。
请注意,Mail.dll 是我创建的商业产品。
@Queops
以下是来自 2 个在线防病毒扫描程序的报告:
请注意,VirusTotal 正在使用 Symantec 扫描程序。
Try free .NET library for accessing IMAP server S22.Imap, with IDLE support