C# 如何将整个MailKit mime消息保存为字节数组
我正在构建一个简单的.net MailKit IMAP客户端。是否可以将整个MailKit mime消息(完整,包括附件)存储为字节数组,而不是从IMAP服务器一次又一次地提取电子邮件?如果是,怎么做C# 如何将整个MailKit mime消息保存为字节数组,c#,.net,mailkit,C#,.net,Mailkit,我正在构建一个简单的.net MailKit IMAP客户端。是否可以将整个MailKit mime消息(完整,包括附件)存储为字节数组,而不是从IMAP服务器一次又一次地提取电子邮件?如果是,怎么做 然后我可以将其写入MySql或文件,并将其重新用于测试代码更改。正如Lucas指出的,您可以使用MimeMessage.WriteTo()方法将消息写入文件名或流(例如MemoryStream) 如果要将消息作为字节数组保存到SQL数据库,可以执行以下操作: using (var memory =
然后我可以将其写入MySql或文件,并将其重新用于测试代码更改。正如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作为字节[]读取,然后执行以下操作:
using (var memory = new MemoryStream (blob, false)) {
message = MimeMessage.Load (memory);
}
使用
MimeMessage.WriteTo
和MimeMessage.Load
我知道这是一个非常旧的线程,但我在项目中使用它,并且遇到了一个问题。写入内存流失败,出现“无法访问已关闭的流”,但仅当mimessage包含另一封电子邮件作为附件时。附加图像或PDF后,该过程运行正常。你知道是什么原因导致的吗?你正在关闭电子邮件附件使用的流。