如何将Outlook邮件转换为保持双字节字符集的文本?

时间:2019-06-05 14:57:37

标签: vba outlook

我有一个代码可以将Outlook电子邮件转换为文本。除了通过CJK(中文/日文/韩文)语言通过DBCS(双字节字符集)接收到的电子邮件外,其效果都很好。

我的代码如下:

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

我需要将摘录保留为文本。如果我将电子邮件手动复制到记事本中,则在我使用UTF-8时,CJK字符将正确复制并正确保存。

我可以在VBA代码中添加什么以正确捕获CJK字符?

1 个答案:

答案 0 :(得分:1)

您可以读取MailItem.Body属性(像所有COM字符串一样,它是UT-16),显式构建标头,将其与消息正文组合,然后自己保存文件。

如果可以选择使用Redemption,则其SaveAs(..., olTxt)版本不会出现此问题:

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