Как преобразовать сообщения Outlook в текст с поддержкой двухбайтового набора символов? - PullRequest
0 голосов
/ 05 июня 2019

У меня есть код для преобразования электронных писем Outlook в текст. Прекрасно работает, за исключением писем, полученных с помощью DBCS (двухбайтовый набор символов) с языков CJK (китайский / японский / корейский).

Код, который я имею, выглядит следующим образом:

Sub SaveAsTXT(myMail As Outlook.MailItem)

    Dim objItem As Object
    Dim myFolder As Folder

    ' Get sender email address
    senderEmAddress = myMail.Sender.GetExchangeUser().PrimarySmtpAddress

        If Not TypeName(myItem) = "Nothing" Then
               strname = myMail.Subject
               strdate = Format(myMail.ReceivedTime, "yymmddhhmmss")
               myMail.SaveAs "C:\folder\" & strdate & ".txt", olTXT
        End If
End Sub

Мне нужно сохранить выписку в виде текста. Если я копирую письмо вручную в блокнот, символы CJK копируются правильно и сохраняются правильно, если я использую UTF-8.

Что можно добавить в код VBA для правильной записи символов CJK?

1 Ответ

1 голос
/ 05 июня 2019

Вы можете прочитать свойство MailItem.Body (как и все строки COM, это UT-16), явно создать заголовок, объединить его с телом сообщения и сохранить файл самостоятельно.

Если используется Погашение является опцией, его версия SaveAs(..., olTxt) не имеет этой проблемы:

set Session = CreateObject("Redemption.RDOSession")
set msg = Session.GetRDOObjectFromOutlookObject(myItem)
msg.SaveAs "c:\temp\test.txt", olTxt
...