簡體   English   中英

Mailkit-在沒有完整的mime消息的情況下獲取HTML和Text部分

[英]Mailkit - Get HTML and Text parts without having full mime message

我想從mime消息中下載文本和html部分,並將其存儲在數據庫中,如果需要下載附件,可以稍后再存儲。 我需要這樣做是因為我不想將附件存儲在數據庫中以節省磁盤空間和帶寬。 它們將在以后按需下載。 我不確定是否可以這樣做,但仍然可以使用MimeKit中的MimeParser

我打算這樣做:

  1. 獲取郵件正文結構並查找文本和html部分
  2. 使用ImapFolder.GetStream下載文本和html正文部分,並通過保存節名稱和標頭將其存儲在數據庫中,以保留mime樹結構。 附件將不會下載

稍后,我想在UI中顯示消息,但是我想延遲解析,直到需要在UI中顯示郵件消息為止。

到目前為止,這是我的進步

var msgSummaries = remoteFolder.Fetch(new int[] { remoteMessage.Index }, MessageSummaryItems.BodyStructure);

 var stream = remoteFolder.GetStream(remoteMessage.Index, msgSummaries[0].HtmlBody.PartSpecifier);

 //at this point i am saving the stream to the database and later i am trying to convert it to mime entity like that
 var parser = new MimeParser(ParserOptions.Default, stream, true);
 var mimeEntity = parser.ParseEntity(cancellationToken);

不幸的是,流不包含mime部件標頭,也無法解析,並且我看不到這樣的選項來請求GetStream方法內的標頭

FETCH 1(BODY.PEEK [2.MIME] BODY.PEEK [2])

有什么建議么?

好吧,首先,您是否嘗試過:

var mimeEntity = remoteFolder.GetBodyPart (remoteMessage.Index, msgSummaries[0].HtmlBody);

或者,如果您確實要使用流:

var headerStream = remoteFolder.GetStream (remoteMessage.Index, msgSummaries[0].HtmlBody.PartSpecifier + ".MIME");
var contentStream = remoteFolder.GetStream (remoteMessage.Index, msgSummaries[0].HtmlBody.PartSpecifier);

var stream = new MemoryStream ();
headerStream.CopyTo (stream);
headerStream.Dispose ();
contentStream.CopyTo (stream);
contentStream.Dispose ();
stream.Position = 0;

//at this point i am saving the stream to the database and later i am trying to convert it to mime entity like that
var parser = new MimeParser(ParserOptions.Default, stream, true);
var mimeEntity = parser.ParseEntity(cancellationToken);

暫無
暫無

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

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