2017-03-16 61 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

相關問題