如何将整个MailKit MIME消息保存为字节数组

5
我正在构建一个简单的 .net MailKit IMAP 客户端。不必一次又一次地从 IMAP 服务器拉取电子邮件,是否可以将 MailKit mime 消息(包括附件在内)作为字节数组存储?如果可以,如何实现?
然后,我可以将其写入 MySql 或文件中,并将其用于测试代码更改。

1
使用 MimeMessage.WriteToMimeMessage.Load - Lucas Trzesniewski
1个回答

12

正如Lucas所指出的那样,您可以使用MimeMessage.WriteTo()方法将消息写入文件名或流(例如MemoryStream)。

如果您想将消息作为字节数组保存到SQL数据库中,可以这样做:

using (var memory = new MemoryStream ()) {
    message.WriteTo (memory);

    var blob = memory.ToArray ();
    // now save the blob to the database
}

要从数据库中读取它,您首先需要将blob读取为byte [],然后执行以下操作:

using (var memory = new MemoryStream (blob, false)) {
    message = MimeMessage.Load (memory);
}

我知道这是一个非常老的帖子,但我正在项目中使用它并遇到了问题。写入内存流时出现“无法访问已关闭的流”的错误,但仅当MimeMessage包含另一封电子邮件作为附件时才会出现此问题。当附加图像或PDF时,该过程运行良好。有什么想法是什么原因引起的吗? - TheDoc
您正在关闭电子邮件附件使用的流。 - jstedfast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接