Странные символы в теле письма - PullRequest
1 голос
/ 06 марта 2019

У меня небольшая проблема с 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 Ответ

1 голос
/ 07 марта 2019

Это похоже на то, что вы работаете с отчетом о недоставке (представленным объектом ReportItem) - ReportItem.Body возвращает тарабарщину при доступе через объектную модель Outlook.Это было проблемой для нескольких версий Outlook.

Вы можете либо пропустить подобные элементы, проверив, что вы получаете только объект MailItem (свойство Class должно быть 43 (olMail)), либоиспользуйте Искупление - его RDOReportItem объект не имеет этой проблемы.

...