2017-03-16 95 views
1

有没有办法仅获取邮件包中所有邮件的标题?在AE邮件有一个headersonly标志,会调用IMAP BODY.PEEK [页眉]查询,但在Mailkit看来你只能通过指定标题,你想取什么标题,使用如何在没有收到全部邮件的情况下获取所有电子邮件标题

Fetch (IList<UniqueId> uids, MessageSummaryItems items, HashSet<HeaderId> fields, CancellationToken cancellationToken = default (CancellationToken)). 

我试着用这抓取和HeaderId中的所有枚举,但仍有相当多的头文件没有被捕获。

我也注意到GetBodyPart有一个headeronly标志,但它需要一个bodypart作为输入。

回答

0

如果你投的文件夹的ImapFolder,您可以拨打:

var entity = ((ImapFolder) folder).GetBodyPart (uid, string.Empty, true); 
var headers = entity.Headers; 

还有一个获取方法,它采用一个HashSet <串>为好,这样你就不会仅仅局限于什么是可用在标题Id

+0

你好,感谢您的快速反应!不幸的是,当你用空字符串调用GetBodyPart时,它不会返回所有的头文件。它将只返回与 “内容 - ” 由于 “如果开始标题(partSpecifier.Length == 0){ \t \t \t \t对(INT I = entity.Headers.Count; I> 0;我 - ){ \t \t \t \t \t var header = entity.Headers [i - 1]; \t \t \t \t \t如果(header.Field.StartsWith( “内容 - ”,StringComparison.OrdinalIgnoreCase)!) \t \t \t \t \t \t entity.Headers.RemoveAt(I - 1);在imapfolder的getBodyPart方法 \t \t \t \t} \t \t \t}” 。 – desperateluck

+0

在我去添加一个'GetMessage(bool headersOnly)'之前,为什么你只想要标题?你在跟他们做什么? – jstedfast

+0

由于Mailkit具有增加的功能,我正在将自动电子邮件测试套件从AE邮件直接转换为Mailkit。然而,由于性能方面的原因,我们的许多测试依赖AE的headeronly标志,我希望尽可能直接进行转换。 – desperateluck

相关问题