最近我們對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