首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从MimeMessage获得IMessageSummary?

如何从MimeMessage获得IMessageSummary?
EN

Stack Overflow用户
提问于 2017-10-17 14:09:24
回答 1查看 1.2K关注 0票数 2

我使用MailKit获得如下所示的完整IMessageSummaries列表:

代码语言:javascript
运行
复制
var allMessages = remoteFolder.Fetch(remoteIndexList, MessageSummaryItems.Full | MessageSummaryItems.Flags | MessageSummaryItems.UniqueId | MessageSummaryItems.BodyStructure);

我对任何优化都不感兴趣,比如下载IMessageSummary的部分等等,我只想尽可能快地获得全部数据。

但是使用上述方法,我无法正确读取消息正文中的HTML,例如使用HtmlPreviewVisitor,因为IMessageSummaryBody属性是BodyPartBasic。显然,我需要整个MimeMessage

问题是,如果我想获得多个MimeMessages,我不能,我只能使用ImapClient.GetMessage(int index, ...)方法一次得到一个。

是否有一种方法可以从用于创建MimeMessage的原始IMessageSummary中提取所有部件,并与HtmlPreviewVisitor一起使用它们,而不必再次下载每个完整的MimeMessage

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-17 20:50:33

你需要做的是:

代码语言:javascript
运行
复制
foreach (var item in allMessages) {
    var message = remoteFolder.GetMessage (item.UniqueId);
}

IMessageSummary实际上并不包含消息或下载消息,它只要求IMAP服务器提供有关消息的各种元数据(例如消息的结构、标记(如读/未读、发送方、主题、日期、to、cc、答复-to等))。

如果您对从IMAP服务器中获取单个MIME部件没有兴趣,那么您可能希望使用一组简化的MessageSummaryItems,如MessageSummaryItems.All | MessageSummaryItems.UniqueId (我知道,All似乎应该包含比Full更多的内容,但这不是IMAP别名的工作方式…)。

根据您计划使用的数据片段,您甚至可以进一步减少所请求的MessageSummaryItems

例如,如果您不使用IMessageSummaryItem.Envelope属性,那么您就不需要MessageSummaryItems.Envelope标志,并且通过不请求它,您将加快查询速度,因为IMAP服务器不会向您发送那么多信息。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46792207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档