2

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

我正在使用来自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!
4

2 回答 2

2

如果你没有达到你的目标,我们开始:

您应该按以下方式编码:

第一:例如,在您的 SearchQuery 类中,添加一个新属性“未读”。第二:添加一个返回 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");
                .
                .
                ...
            }

4th:使用新的 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());

让我知道你的进展。我希望它会有所帮助。

再见。

于 2012-01-12T20:22:02.300 回答
1

老实说,我只是最终使用了 Mail.dll 试用版,因为 interIMAP 对我来说无法正常工作并且速度变慢,因为它出于某种原因索引了电子邮件:s

于 2010-05-13T22:17:04.803 回答