最近我们对Outlook有一个奇怪的问题,影响了一些用户。Outlook ReportItem.Body为某些用户返回编码错误
如果某些用户使Outlook客户端自动化查看共享收件箱中的退回/ ReportItems,而不是按文档所示返回消息的明文,我们会返回一个unicode字符串,该字符串已被解析为UTF- 8字符串 - 所以它看起来像中文。
现在我可以通过一些代码了解一些情况,但是另外一个问题是,此更改发生在Outlook中以及所有有权访问该收件箱的用户。在Outlook中查看的消息本身显示为中文字符 - 最初的unicode html解析为UTF-8。
看起来这可能是一个已知的问题,但我想看看我能否在这里得到一些建议。
我们使用的是正常的方法来访问的报表项目:
For Counter as Integer = Inbox.Items.Count To 1 Step -1
Dim Report As Outlook.ReportItem = Inbox.Items(Counter)
Dim Body As String = Report.Body
最后一行是我们得到的garbaled文本。在VBA中,它试图将它解析为ASCII并返回一大块“?”而在.Net中它返回解析为UTF-8的值,并且我们得到出现中文的字符。无论哪种情况,收件箱中的原始报告项目都会以中文字符显示,并继续为该收件箱的所有用户执行此操作。
任何想法?
更新:我想分享一个更新,因为它似乎有几个人仍然看到它。
我想快速强调一下,编码问题在这里讨论得很好,并且通过代码访问消息的正文文本被覆盖并且相当容易。 但是,Outlook客户端中的编码问题仍然存在,并且从未解决,并且此问题是我的问题。 .Body
属性中存在一些错误,这些错误对Exchange服务器上的原始邮件对象进行编码。对于需要解决特定问题的任何人祝好运。
再次更新:对该问题的回答和更详细的说明张贴如下,并选择作为答案。
不错。虽然解决方案可能对所有人都不实用,但这是对我所见到的问题的最详细解释。而且由于这是一个解决缺陷的工作,所以我认为你不能期望它在任何情况下都能正常工作。感谢您添加新信息! – MattB 2016-01-27 19:56:46