【问题标题】:InterIMAP, Viewing UNREAD IMAP mail and Downloading Attachments in C#InterIMAP,在 C# 中查看未读 IMAP 邮件和下载附件
【发布时间】:2012-01-13 04:22:02
【问题描述】:

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

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

【问题讨论】:

    标签: c# email imap interimap


    【解决方案1】:

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

    您应该按以下方式编码:

    第一个:例如,在您的 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());
    

    让我知道你的进展。 希望对您有所帮助。

    再见。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-03-19
        • 1970-01-01
        • 2011-09-06
        • 1970-01-01
        • 2012-03-08
        • 2016-05-03
        • 2014-06-06
        • 2017-10-15
        • 2020-09-12
        相关资源
        最近更新 更多