0

我正在使用“MailKit”从邮件服务器获取消息。

http://solvedstack.com/questions/using-c-net-librarires-to-check-for-imap-messages-from-gmail-servers-closed

我使用了文本下的代码“我建议查看 MailKit,因为它可能是最强大的邮件库,而且它是开源 (MIT)。

MailKit 最棒的事情之一是所有网络 API 都是可取消的(我在任何其他 IMAP 库中都没有看到可用的东西)。

它也是我所知道的唯一支持消息线程的库。”

现在上面代码的问题是我无法获取消息回复。我已经根据邮件主题搜索了邮件,但我只收到了第一条邮件,没有收到邮件中的其他回复。所以任何人都可以让我知道如何在电子邮件中获得回复线程。

4

1 回答 1

1

如果您的服务器支持该THREAD扩展,您可能会想要使用它。

以下是您可以如何使用它:

if (client.Capabilities.HasFlag (ImapCapabilities.Thread)) {
    var threads = client.Inbox.Thread (ThreadingAlgorithm.References, SearchQuery.All);

    // `threads' now holds the relationship of all messages in the Inbox
    // so that you can figure out which messages are replies to what
    // other message. Each MessageThread node will have a UniqueId that
    // you can use to get the message at that node and a list of
    // "children" (which are replies to that message).
}

如果您的 IMAP 服务器不支持THREAD扩展,您可以这样做以获得相同的结果:

var messages = client.Inbox.Fetch (0, -1, MessageSummaryItems.UniqueId |
    MessageSummaryItems.Envelope | MessageSummaryItems.References);
var threads = MessageThreader.Thread (ThreadingAlgorithm.References, messages);

如果您正在寻找对特定消息的回复,则需要知道该消息的 UniqueId,然后在threads结构中搜索以找到匹配的 UniqueId。如果该节点有任何Children,那么这些将是回复。

于 2015-07-30T14:18:59.947 回答