将Exchange Agent中的MailItem保存到.eml文件会丢失电子邮件正文

时间:2015-06-23 09:42:53

标签: email exchange-server

我已经建立了一个交换代理,可以将某些电子邮件保存到磁盘。

我可以在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);
    }
}

1 个答案:

答案 0 :(得分:0)

创建eml文件时,请检查您的eml标头属性(contenr-type)。 例)在mime版本下。  content-type,encoding type ..