当移动到本地文件夹时,XML 标签从电子邮件正文中消失

当移动到本地文件夹时,XML 标签从电子邮件正文中消失

我在 Windows 7 上使用 Outlook 2013(均已更新至最新补丁),处于“在线”模式(“使用缓存 Exchange 模式”设置被禁用,通常默认启用)。

如果我收到一封包含 XML 标记的电子邮件(HTML 格式,在 Exchange 服务器上),例如:

the customers age is in the <age> element

那么它工作正常,但如果我将电子邮件移动到本地数据文件夹并从那里打开它,文本将如下所示:

the customers age is in the element

XML 标签消失。

我深入研究了一下事实,虽然原始消息中的源代码是正确的,例如:

the customers age is in the &lt;age&gt; element

移动后变为:

the customers age is in the <age> element

其中“未知”标签被渲染器忽略。

知道为什么会发生这种情况以及如何解决吗?

我将防病毒软件从嫌疑人名单中排除了(通过卸载并清理它,然后重复测试)。

如果我通过启用“使用缓存 Exchange 模式”更改帐户设置,那么问题就消失了(本地数据文件夹中损坏的旧邮件除外,它们仍然损坏)。这是缓存模式的已知问题吗?

答案1

禁用缓存 Exchange 模式后,Outlook 2013 导出的邮件会实例化其 XML。具体来说, XML 实体&lt;替换,<并被&gt;替换>。结果不是消息的精确副本。

在使用拖放到文件系统或菜单文件/另存为时都会发生这种情况。我建议也尝试 VBA,使用 Microsoft 文章中的 VBA 示例 MailItem.SaveAs 方法 (Outlook) (看 如何使用 Outlook 的 VBA 编辑器),但我不相信这会改变结果。

我的结论是,这是 Exchange 中的一个普遍错误(或糟糕的实现)。缓存模式提供了一种解决方法,可能是 Microsoft 无意为之,即消息从本地缓存按原样写入文件系统。但是,当从 Exchange 服务器请求消息时,XML 实例化始终会完成,并且可能在服务器端完成,因为所有导出机制都会产生相同的结果。本地安装的 Outlook 版本不会执行 Exchange 服务器执行的 XML 实例化。

因此,不幸的是,经验结论是必须启用“缓存 Exchange 模式”才能避免 XML 实例化,至少目前如此。

相关内容