【问题标题】:Fetched Emails not ordered when I use pop3当我使用 pop3 时,获取的电子邮件未排序
【发布时间】:2019-04-17 14:31:28
【问题描述】:

首先,我使用这个库 OpenPop.Pop3 通过 POP3 获取电子邮件,它工作正常,它将从最后一封电子邮件订购的电子邮件返回到第一封电子邮件 但是当我将库更改为 mailkit 库时,返回的消息没有排序,并且无法知道基于什么 mailkit 订单获取的电子邮件 这是我更改为 mailkit 库后的代码

using (Pop3Client client = new Pop3Client())
        {
            // Connect to the server
            client.Connect(hostname, port, useSsl);
            client.AuthenticationMechanisms.Remove("XOAUTH2");
            client.Authenticate((username), password);
            int messageCount = client.Count;

            // We want to download all messages
            List<MimeMessage> allMessages = new List<MimeMessage>(messageCount);

            for (int i = messageCount-1; i > 0; i--)
            {
                    var msg = client.GetMessage(i);
                    allMessages.Add(msg);
            }
         }

通过这种方式,allmessages 变量应该包含从最后一封电子邮件到第一封电子邮件排序的电子邮件,但没有发生过根本没有排序的电子邮件 尽管我之前在 OpenPop.Pop3 中使用过相同的经过身份验证的电子邮件,并且已订购了获取的电子邮件

【问题讨论】:

    标签: c# gmail pop3 mailkit


    【解决方案1】:

    我不知道为什么不为您订购它们,因为 MailKit 不进行任何类型的排序。

    也就是说,MailKit 使用基于 0 的索引,而我认为 OpenPOP.NET 必须使用基于 1 的索引,因此您的循环应该进行以下更改:

    for (int i = messageCount-1; i >= 0; i--)
    {
        var msg = client.GetMessage(i);
        allMessages.Add(msg);
    }
    

    也许这会产生预期的结果?

    更新:事实证明,MailKit 正确地以相反的顺序下载消息,就像他的代码试图做的那样(正如他的 follow-up question 中提到的那样)。该用户面临的问题是,他的 GMail 帐户设置仅向 MailKit 的 Pop3Client 提供了其总收件箱的一部分,正如 Google 的 FAQ 在标题为“电子邮件未正确下载”的部分中所解释的那样,其中指出:

    在您的 Gmail 设置中设置 POP 后,您的电子邮件将可用 分批。可能需要一段时间才能查看您的所有电子邮件。

    注意:Gmail 会下载您发送或接收的每封电子邮件的副本,除了 用于聊天、垃圾邮件和垃圾箱中的电子邮件。为避免重复,Gmail 不会 下载在您的邮件客户端中发送的电子邮件,但您仍然可以看到它们 如果您登录到 Gmail。

    如果您在下载电子邮件时仍然遇到问题,请尝试使用最近的 模式:

    1. 在您的电子邮件客户端的 POP 设置页面中,找到“电子邮件地址”或 “用户名”字段。
    2. 添加最近的:在您的电子邮件地址前面。例如, 最近:example@gmail.com。

    如果这不能解决问题,请尝试从电子邮件客户端中删除您的 Gmail 地址,然后重新添加。

    【讨论】:

    • 0 应该返回最后输入的电子邮件,但是这个代码没有订购电子邮件的问题!
    • 我只需要始终获取新电子邮件
    • client.GetMessage(0) 返回存储在 POP3 服务器上的最早消息。
    • 您为什么认为它们没有正确“排序”?您使用什么作为此声明的依据? POP3 使用索引来引用消息。 MailKit 使用索引来引用消息。 MailKit 内部根本没有进行排序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2019-04-18
    • 2015-12-09
    • 2010-12-04
    • 2013-11-17
    • 2010-09-07
    相关资源
    最近更新 更多