Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将整个MailKit mime消息保存为字节数组_C#_.net_Mailkit - Fatal编程技术网

C# 如何将整个MailKit mime消息保存为字节数组

C# 如何将整个MailKit mime消息保存为字节数组,c#,.net,mailkit,C#,.net,Mailkit,我正在构建一个简单的.net MailKit IMAP客户端。是否可以将整个MailKit mime消息(完整,包括附件)存储为字节数组,而不是从IMAP服务器一次又一次地提取电子邮件?如果是,怎么做 然后我可以将其写入MySql或文件,并将其重新用于测试代码更改。正如Lucas指出的,您可以使用MimeMessage.WriteTo()方法将消息写入文件名或流(例如MemoryStream) 如果要将消息作为字节数组保存到SQL数据库,可以执行以下操作: using (var memory =

我正在构建一个简单的.net MailKit IMAP客户端。是否可以将整个MailKit mime消息(完整,包括附件)存储为字节数组,而不是从IMAP服务器一次又一次地提取电子邮件?如果是,怎么做


然后我可以将其写入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后,该过程运行正常。你知道是什么原因导致的吗?你正在关闭电子邮件附件使用的流。