VSTO ReportItem.Body выглядит искаженным - PullRequest
0 голосов
/ 16 июня 2020

Вот вопрос. Я разрабатываю надстройку VSTO для OUTLOOK, чтобы читать письма с возвратом сообщений. Пока я получаю строку Body из ReportItem, она отображает искаженный текст.

Я использовал outlookspy для проверки значения, оно искажено. Кто-нибудь знает как исправить? enter image description here

Вот мой код:

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
}

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Я не уверен, что это правильный способ обращения. проблема может быть решена с помощью следующего кода:

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

и я записываю тело письма в txt файл. Это html.

enter image description here

Но возникла другая проблема.

После обработки письма. содержимое письма искажено.

до enter image description here После: enter image description here

0 голосов
/ 16 июня 2020

Китайский - это действительно проблема парсинга в OOM. Вам необходимо проанализировать строку для правильного кодирования, например, в VBA вы можете попробовать использовать следующий код:

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

Кроме того, вы можете использовать Redemption для правильной кодировки текста:

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

См. Outlook ReportItem.Body, возвращающий неверную кодировку для некоторых пользователей для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...