我有一个代码可以将Outlook电子邮件转换为文本。除了从中日韩(中文/日文/韩文(语言收到的带有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(,显式生成标头,将其与消息正文组合,然后自己保存文件。
如果使用 Redemption(我是它的作者(是一种选择,那么它的 SaveAs(..., olTxt)
版本没有这个问题:
set Session = CreateObject("Redemption.RDOSession")
set msg = Session.GetRDOObjectFromOutlookObject(myItem)
msg.SaveAs "c:temptest.txt", olTxt