【问题标题】:Mailkit - Get HTML and Text parts without having full mime messageMailkit - 在没有完整的 mime 消息的情况下获取 HTML 和文本部分
【发布时间】:2018-05-18 06:48:43
【问题描述】:

我想从 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 方法中请求标头的选项

获取 1(BODY.PEEK[2.MIME] BODY.PEEK[2])

有什么建议吗?

【问题讨论】:

    标签: c# mailkit mimekit


    【解决方案1】:

    嗯,首先,你有没有试过:

    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);
    

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2017-05-12
      • 2011-01-23
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 2022-07-12
      • 2017-04-11
      • 2016-12-31
      相关资源
      最近更新 更多