【问题标题】:VSTO ReportItem.Body appeared garbledVSTO ReportItem.Body 出现乱码
【发布时间】:2020-10-05 17:33:38
【问题描述】:

问题来了。我正在为 OUTLOOK 开发一个 VSTO 加载项来阅读退回电子邮件。 当我从 ReportItem 中获取字符串 Body 时,它显示的是乱码。

我用outlookspy查看值,是乱码。有谁知道如何解决它?

这是我的代码:

Outlook.MAPIFolder inbox = Globals.ThisAddIn.Application.Session.DefaultStore.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
foreach (object item in inbox.Items)
{
    Outlook.ReportItem mail = item as Outlook.ReportItem;
    string Bodystring = mail.Body;

    // DO something
}

【问题讨论】:

标签: c# outlook add-in


【解决方案1】:

中文实际上只是OOM中的一个解析问题。您需要将字符串解析为正确的编码,例如,在 VBA 中您可以尝试使用以下代码:

Dim strBody as String
strBody = StrConv(Report.Body, vbUnicode)

另外,您可以使用 Redemption 来正确编码文本:

set rItem = oSession.GetRDOObjectFromOutlookObject(oItem)
MsgBox rItem.ReportText

请参阅Outlook ReportItem.Body returning messed up encoding for some users 了解更多信息。

【讨论】:

  • 这个例子是关于VBA的,我可以把它应用到VSTO上吗?
  • 是的。 Outlook 对象模型适用于所有编程语言。
【解决方案2】:

我不确定这是否是正确的处理方式。问题可以通过以下代码解决:

string body = Encoding.Default.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Unicode, Encoding.UTF8.GetBytes(mail.body)));   

然后我将邮件正文写入 txt 文件。是html。

但是发生了任何其他问题。

处理电子邮件后。邮件内容乱码。

之前 后:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2016-12-19
    • 2013-05-28
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多