如何从 IMessageSummary 获取 MimeMessage?
How to get MimeMessage from IMessageSummary?
我正在使用 MailKit 获取完整的 IMessageSummaries 列表,如下所示:
var allMessages = remoteFolder.Fetch(remoteIndexList, MessageSummaryItems.Full | MessageSummaryItems.Flags | MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure);
我对下载 IMessageSummary 的部分内容等任何优化不感兴趣,我只想要完整的数据,尽可能快地获取它。
但是使用上述方法,我无法正确读取邮件正文中的 HTML,例如使用 HtmlPreviewVisitor
因为 Body
属性 IMessageSummary
是一个 BodyPartBasic
。显然,我需要整个 MimeMessage
。
问题是,如果我想获取多个MimeMessages
,我不能,我只能使用ImapClient.GetMessage(int index, ...)
方法一次获取一个
有没有办法从用于创建 IMessageSummary
的原始 MimeMessage
中提取所有部分并将它们与 HtmlPreviewVisitor
一起使用,而无需下载每个完整的 MimeMessage
又是?
您需要做的是:
foreach (var item in allMessages) {
var message = remoteFolder.GetMessage (item.UniqueId);
}
IMessageSummary
实际上并不包含消息或下载消息,它只是向 IMAP 服务器询问有关消息的各种元数据(例如消息的结构、标志等read/unread、发件人、主题、日期、收件人、抄送、回复等)。
如果您对从 IMAP 服务器获取单个 MIME 部分不感兴趣,那么您可能希望使用缩减的 MessageSummaryItems
集,例如 MessageSummaryItems.All | MessageSummaryItems.UniqueId
(我知道,All
似乎它应该包含超过 Full
,但这不是 IMAP 别名的工作方式......)。
根据您计划使用的数据,您甚至可以进一步减少请求的 MessageSummaryItems
。
例如,如果您不使用 IMessageSummaryItem.Envelope
属性,那么您就不需要 MessageSummaryItems.Envelope
标志并且不请求它,您将加快速度查询,因为 IMAP 服务器不会向您发送那么多信息。
我正在使用 MailKit 获取完整的 IMessageSummaries 列表,如下所示:
var allMessages = remoteFolder.Fetch(remoteIndexList, MessageSummaryItems.Full | MessageSummaryItems.Flags | MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure);
我对下载 IMessageSummary 的部分内容等任何优化不感兴趣,我只想要完整的数据,尽可能快地获取它。
但是使用上述方法,我无法正确读取邮件正文中的 HTML,例如使用 HtmlPreviewVisitor
因为 Body
属性 IMessageSummary
是一个 BodyPartBasic
。显然,我需要整个 MimeMessage
。
问题是,如果我想获取多个MimeMessages
,我不能,我只能使用ImapClient.GetMessage(int index, ...)
方法一次获取一个
有没有办法从用于创建 IMessageSummary
的原始 MimeMessage
中提取所有部分并将它们与 HtmlPreviewVisitor
一起使用,而无需下载每个完整的 MimeMessage
又是?
您需要做的是:
foreach (var item in allMessages) {
var message = remoteFolder.GetMessage (item.UniqueId);
}
IMessageSummary
实际上并不包含消息或下载消息,它只是向 IMAP 服务器询问有关消息的各种元数据(例如消息的结构、标志等read/unread、发件人、主题、日期、收件人、抄送、回复等)。
如果您对从 IMAP 服务器获取单个 MIME 部分不感兴趣,那么您可能希望使用缩减的 MessageSummaryItems
集,例如 MessageSummaryItems.All | MessageSummaryItems.UniqueId
(我知道,All
似乎它应该包含超过 Full
,但这不是 IMAP 别名的工作方式......)。
根据您计划使用的数据,您甚至可以进一步减少请求的 MessageSummaryItems
。
例如,如果您不使用 IMessageSummaryItem.Envelope
属性,那么您就不需要 MessageSummaryItems.Envelope
标志并且不请求它,您将加快速度查询,因为 IMAP 服务器不会向您发送那么多信息。