gpt4 book ai didi

vb.net - Outlook ReportItem.Body返回某些用户的困惑编码

转载 作者:行者123 更新时间:2023-12-04 13:49:28 24 4
gpt4 key购买 nike

最近,我们在Outlook中遇到了一个奇怪的问题,该问题正在影响某些用户。

如果某些用户自动执行Outlook Client来查看共享收件箱中的退回邮件/ReportItem,而不是按照文档所示返回邮件的明文,我们将获得一个已解析为UTF-8字符串的unicode字符串-因此它看起来像中文。

现在,我可以使用一些代码来解决这个问题,但是另一个问题是,对于具有该收件箱访问权限的所有用户,此更改也会在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

最后一行是我们获取乱码的地方。在VBA中,它尝试将其解析为ASCII并返回大块“?”而在.Net中,它返回解析为UTF-8的值,我们得到显示为中文的字符。无论哪种情况,收件箱中的原始报告项目都开始以汉字显示,并继续为该收件箱的所有用户显示。

有任何想法吗?

更新:我想分享对此的更新,因为似乎仍有一些人看到它。

我想快速强调一下,编码问题已在此处进行了很好的讨论,并且通过代码访问消息的正文是相当容易的。 但是,编码问题在Outlook客户端中仍然存在,并且从未得到解决,这是我一直关心的问题。 .Body属性中必须存在一些错误,该错误会破坏Exchange服务器上原始邮件对象上的编码。对于需要解决该特定问题的任何人,祝您好运。

再次更新:下面发布了问题的答案和更详细的描述,并将其选作答案。

最佳答案

是的,Outlook对象模型(存在于Outlook 2013和2016中)的ReportItem.Body属性存在问题-您可以在OutlookSpy中看到它:选择一个NDR消息,单击“项目”按钮,选择“正文”属性-它会出现乱码。更糟糕的是,一旦报表项被OOM所触及,Outlook将在预览 Pane 中显示相同的垃圾邮件。
报告文本存储在各种MAPI收件人属性中(单击OutlookSpy中的IMessage按钮,然后转到GetRecipientTable选项卡)。问题是ReportItem对象未公开收件人集合。解决方法是使用扩展MAPI(C++或Delphi)或Redemption(任何语言)-其ReportItem .ReportText属性不存在此问题:

set oItem = Application.ActiveExplorer.Selection(1)
set oSession = CreateObject("Redemption.RDOSession")
oSession.MAPIOBJECT = Application.Session.MAPIOBJECT
set rItem = oSession.GetRDOObjectFromOutlookObject(oItem)
MsgBox rItem.ReportText

关于vb.net - Outlook ReportItem.Body返回某些用户的困惑编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29040321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com