簡體   English   中英

如何獲取郵件正文而不下載附件

[英]How to get message body without downloading attachment

我正在使用名為:MailKit的IMAP4客戶端。 它工作得很好,但是在沒有下載附件的情況下我在獲取消息體方面存在問題。 我想顯示郵件的正文以及附件是什么,但只有當用戶點擊我想要實際下載附件的附件時。

我試過了:

var message = inbox.GetMessage(uid, cancel.Token);

但這會得到整個信息。

還嘗試過:

uids[0] = uid;
var ms = inbox.Fetch(uids, MessageSummaryItems.BodyStructure , cancel.Token);  
var bp1 = inbox.GetBodyPart(uid, ms.First().Body, cancel.Token);

但是再次下載附件。

使用示例代碼,您正在下載整個消息,因為您正在請求消息的頂級正文部分。

MIME是“正文部分”的樹結構。 你想要做的是遍歷ms.First()。正文以找到你想要的部分,然后使用GetBodyPart()方法單獨下載它們。

看看MailKit.BodyPartMultipart,MailKit.BodyPartMessage,MailKit.BodyPartBasic和MailKit.BodyPartText。

BodyPartMultipart包含其他身體部位。

BodyPartMessage部件包含一條消息(它還包含一個正文部分)。

BodyPartBasic是一個基本的葉節點正文部分 - 通常是一個“附件”。

BodyPartText是一個文本部分(BodyPartBasic的子類),它可以是附加的文本部分,也可以是您可能認為是消息的主要文本的部分。

要確定BodyPartBasic是要內聯顯示還是作為附件顯示,您需要做的是:

if (part.ContentDisposition != null && part.ContentDisposition.IsAttachment)
    // it is an attachment
else
    // it is meant to be shown to the user as part of the message
    // (if it is an image, it is meant to be displayed with the text)

我應該為BodyPartBasic添加一個名為IsAttachment的便利屬性,以使其更簡單(我今天會嘗試添加它)。

希望有所幫助。

更新:我剛剛在git master中添加了BodyPartBasic.IsAttachment便利屬性,因此MailKit的下一個版本將擁有它。

此IMAP命令將僅返回文本正文。

     a1 uid fetch <uid> (body.peek[text])

-Rick

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM