我已经建立了一个交换代理,可以将某些电子邮件保存到磁盘。
我可以在outlook中打开写入磁盘的.eml文件,唯一的问题是电子邮件的正文丢失了,当我这样做的时候也是如此" rightmousebutton - 查看源代码"在保存到磁盘的电子邮件的Outlook中,我得到一个空的结果(主题和附件仍然存在)。我收到后,身体仍然存在于外观中(当向我发送电子邮件并在Outlook中打开收到的消息时)。
我使用了以下代码:
public void Write(Stream from, Stream to)
{
for (int a = from.ReadByte(); a != -1; a = from.ReadByte())
to.WriteByte((byte)a);
}
private void HandleMailItem(MailItem mailItem)
{
try
{
using (var ms = mailItem.GetMimeReadStream())
{
using (var fs = new FileStream(@"c:\temp\email.eml", FileMode.Create))
{
Write(ms,fs);
}
}
}
}
除了mailtem.GetMimeReadStream()之外,我还尝试了mailItem.Message.MimeDocument.Write但结果相同(缺少电子邮件正文)
private void WriteEmlFile(MailItem mailItem, string emailFilePath)
{
_logger.Info("writing file {0}", emailFilePath);
using (var ms = new MemoryStream())
{
mailItem.Message.MimeDocument.WriteTo(ms);
var byteArray = ms.ToArray();
EncryptionHelper.Encrypt(byteArray, emailFilePath);
}
}
答案 0 :(得分:0)
创建eml文件时,请检查您的eml标头属性(contenr-type)。 例)在mime版本下。 content-type,encoding type ..