10

我正在寻找一种方法来监视 GMail 收件箱中的新电子邮件。但是,我想避免每隔几分钟检查一次,我正在寻找某种实时通知。我注意到 Outlook(和其他支持 IMAP 的客户端)在有新电子邮件时会立即显示,但不幸的是,所有 .NET IMAP 库似乎都缺少此功能。

有谁知道具有此功能的 IMAP 库?还是有另一种方法可以在不进行短期轮询的情况下立即通知新消息?

4

3 回答 3

10

您需要处理IMAP IDLE

这将在新消息到达时通知您,而无需不断轮询(这很糟糕)。


MailBee.Net是一个非常好的商业 .NET IMAP 库。不久前我将它用于一个小项目,它似乎处理得很好,并且相当容易使用。可能还有其他的——只要在你的库中搜索发送 IDLE 命令或 IDLE 命令处理,你可能会找到一些东西。

于 2009-04-14T15:24:32.403 回答
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();
}

您可以在以下网址下载 Mail.dll:http: //www.lesnikowski.com/mail/

另请查看我的博客以获取示例

请注意,Mail.dll 是我创建的商业产品。

@Queops

以下是来自 2 个在线防病毒扫描程序的报告:

www.viruschief.com

www.virustotal.com

请注意,VirusTotal 正在使用 Symantec 扫描程序。

于 2010-04-15T05:00:14.857 回答
2

Try free .NET library for accessing IMAP server S22.Imap, with IDLE support

于 2013-06-27T10:43:33.287 回答