我有一个代码可以将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字符?
答案 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