Vba 如何将Outlook邮件转换为文本维护双字节字符集?

Vba 如何将Outlook邮件转换为文本维护双字节字符集?,vba,outlook,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.Ge

我有一个将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字符?

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

如果使用是一个选项,则其版本的
SaveAs(…,olTxt)
没有此问题:

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