InterIMAP,在C#中查看UNREAD IMAP邮件和下载附件

时间:2010-04-01 21:54:47

标签: c# email imap interimap

我想知道是否有人可以帮助我,因为它让我疯狂地试图让这个工作

我正在处理来自http://www.lesnikowski.com/mail/的mail.dll的踪迹,这是一个非常奇妙的工具,不幸的是我不能成为一名学生(即使它大约150欧元,它对我来说仍然非常昂贵:/)和这将是我论文中的一个小模块,我的教师也买不起为学生买这些东西:/所以无论如何我不得不去寻找一个免费的工具(所以请不要建议任何非开源的 - 相信我,我试过它们所有)..

好吧,我正在尝试探索InterIMAP,几个小时一直试图从我的Gmail帐户列出未读的电子邮件,但它似乎没有起作用。我可以连接得很好,但找到未读的电子邮件似乎不是一件容易的事。我尝试了无数的方法,但似乎没有在我的收件箱中给我未读的电子邮件(我的收件箱中有大量的电子邮件,我只想要未读的邮件)。有人请帮助我吗?我一直试图让这个工作多年,但文档相当缺乏,我的每一次尝试都导致了迄今为止的失败。

请帮助!!

我目前拥有的一些代码: `IMAPConfig config = new IMAPConfig(“myhost”,“username”,“pass”,true,true,“”);

        config.CacheFile = "";

        IMAPClient client = null;
        try
        {
            client = new IMAPClient(config, null, 5);
        }
        catch (IMAPException e)
        {
            Console.WriteLine(e.Message);
            return;
        }
        Console.WriteLine(DateTime.Now.ToString());


        IMAPFolder f = client.Folders["INBOX"];
        IMAPSearchResult sResult = f.Search(IMAPSearchQuery.QuickSearchNew()); // <--- Gives me no results even though i do have unread messages!

2 个答案:

答案 0 :(得分:2)

如果你没有达到目标,我们就去:

您应该按以下方式编码:

1st:在您的SearchQuery类中,添加一个新属性“unread”,例如。 第二步:添加一个返回IMAPSearchQuery的新方法。它会快速搜索未读邮件。这样的事情:

    public static IMAPSearchQuery QuickSearchUnread()
    {
        IMAPSearchQuery query = new IMAPSearchQuery();
        query.unread = true;

        return query;
    }

3td:在您的类IMAPFolder中,您有一个名为的方法将返回IMAPSearchResult类型并接收IMAPSearchQuery作为参数。 此方法使用IMAP命令查询(基于IMAP的协议)“构建”您的查询。 对于未读查询,您应该添加:

            public IMAPSearchResult Search(IMAPSearchQuery query)
            {
                ...
                if (query.Unread)
                    searchTerms.Add("UNSEEN");
                .
                .
                ...
            }

第4步:使用新的QuickSearch调用Search方法:

config.CacheFile = "";

    IMAPClient client = null;
    try
    {
        client = new IMAPClient(config, null, 5);
    }
    catch (IMAPException e)
    {
        Console.WriteLine(e.Message);
        return;
    }
    Console.WriteLine(DateTime.Now.ToString());


    IMAPFolder f = client.Folders["INBOX"];
    IMAPSearchResult sResult = f.Search(IMAPSearchQuery.QuickSearchUnread());

让我知道你的进步。 我希望它能有所帮助。

再见。

答案 1 :(得分:1)

老实说,我刚刚结束使用Mail.dll试用版,因为interIMAP对我来说工作不正常而且速度慢,因为它因某些原因索引电子邮件:s