电子邮件正文中的怪异字符

时间:2019-03-06 20:27:51

标签: vba vbscript outlook character-encoding

我对VBScript有点问题。它应该如何工作。这是一个简单的代码,应该遍历特定文件夹中的所有电子邮件,获取特定的电子邮件正文并尝试查找正则表达式。它可以在我的计算机上正常工作,但在其他笔记本电脑(我的朋友笔记本电脑)上却无法正常使用相同的代码。大多数(并非全部)电子邮件正文看起来很奇怪,如下面的附件屏幕所示:

VBS Results

我想补充一点,我们有相同的电子邮件要测试。同样奇怪的是,使用脚本后,它将第一封电子邮件转换为这些奇怪的字符。 这就是代码的样子:

Set objOutlook = CreateObject("Outlook.Application")
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objMailbox = objNamespace.Folders(Main_mailbox)
Set objMainMailbox = objMailbox.Folders(Main_folder)
Set objFolder = objMainMailbox.Folders(Sub_folder)
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "<.+>"

Set colItems = objFolder.Items

NumberOfEmails = colItems.Count
WScript.Echo NumberOfEmails & " emails found"
For i = NumberOfEmails To 1 Step - 1
    BodyMsg = colItems(i).Body
    Lines = Split(BodyMsg, vbCrlf)
    For j = 1 To UBound(Lines)
        If InStr(1, Lines(j), "Reply-To:") Then
            Set RegMatches = re.Execute(Lines(j))
            For Each myMatch In RegMatches
                OutputMatch = OutputMatch & " " & myMatch & ";"
                OutputMatch = Replace(OutputMatch, "<", "", 1, 1)
                OutputMatch = Replace(OutputMatch, ">", "", 1, 1)
                EmailCount = EmailCount + 1
            Next
        End If
    Next
Next

我想知道这是关于编码还是类似的问题,并且该问题是否是由系统设置引起的?

如果您需要更多我忘记提及的信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

这听起来像是您遇到了NDR(由ReportItem对象表示的未送达报告)-ReportItem.Body通过Outlook对象模型访问时返回乱码。现在,对于某些版本的Outlook,这一直是个问题。

您可以通过检查是否仅获得MailItem对象(Class属性必须为43(olMail)来跳过此类项目,也可以使用Redemption-其{{3} }对象没有此问题。