Пересылка писем Outlook на основе определенного содержимого вложения

Создание настраиваемого правила пересылки писем на основе содержимого вложений. Я не знаю, как использовать регулярное выражение для содержимого вложений.

См. Код - я думаю, что использую Regex только для содержимого электронной почты, а не для содержимого вложений.

Option Explicit
Public Sub Forward(Item As Outlook.MailItem)
    Dim M1 As MatchCollection
    Dim M As Match
    Dim Reg1 As Object
    Dim myForward As Object

    Set Reg1 = New RegExp

    With Reg1
        .Pattern = "(Next year\s*(\w*)\s*)"
        .Global = True
    End With

    If Reg1.Test(Item.Body) Then
        Set M1 = Reg1.Execute(Item.Body)
        For Each M In M1
            Debug.Print M.SubMatches(0) ' Immediate Window

            Item.Subject = Item.Subject & " - Next year"
            Item.HTMLBody = "<HTML><BODY>Assignments for next year. </BODY></HTML>" & objForward.HTMLBody

        Next
    End If

    Item.Save

    Set myForward = Item.Forward
    myForward.Recipients.Add "[email protected]"
    myForward.Display
End Sub

Я хочу, чтобы результат был: - Переслать электронное письмо - Новая тема: [Item.Subject] & «- В следующем году»

Электронные письма, которые будут пересылаться: - Электронные письма, содержащие вложения, содержащие текст: «В следующем году»


person Niels    schedule 12.06.2019    source источник
comment
какой формат вложения .txt или pdf или что-то еще   -  person Ansu    schedule 12.06.2019
comment
Формат приложения - .pdf.   -  person Niels    schedule 13.06.2019


Ответы (1)


В объектной модели Outlook нет ничего, что могло бы предоставить доступ к содержимому вложенного файла, кроме упрощения сохранения вложения на диск. Вам нужно будет использовать дополнительные API-интерфейсы для каждого проприетарного типа содержимого файла, который вы хотите проанализировать. В VBA есть команда Open, которая позволит вам читать текстовые файлы.

person Eric Legault    schedule 12.06.2019
comment
Хорошо, спасибо за ответ. Просто чтобы убедиться - краткий ответ на мой вопрос - нет, не так ли? - person Niels; 13.06.2019
comment
Конечно, это возможно, но вы определенно ограничены в использовании VBA. Надстройка .NET COM предоставит вам больше возможностей для использования дополнительных API для чтения различного содержимого файлов. Хотя, поскольку Word может открывать PDF-файлы, вы можете использовать объектную модель Word для его анализа. - person Eric Legault; 13.06.2019
comment
Короче говоря, я новичок в VBA, так что простите меня, если мои вопросы невелики. Если объектная модель Word может открывать файлы .pdf и анализировать их - ›Нужно ли мне загружать каждое вложение .pdf (по одному письму за раз), чтобы использовать объектную модель Word для анализа текста? Или есть способ лучше? А вы можете хоть как-нибудь помочь мне с каким-нибудь кодом / псевдокодом? Спасибо за отличные ответы! - person Niels; 17.06.2019
comment
Да, вам нужно сохранить вложения на диск, чтобы вы могли открывать их в Word. Если у вас есть конкретный вопрос об использовании Word, отправьте отдельный вопрос, если вы не можете найти ответ на основе собственного исследования. Существует множество документации по использованию объектной модели Word, например здесь: docs.microsoft.com/en-ca/office/vba/api/overview/word. В противном случае StackOverflow не является сервисом написания кода. - person Eric Legault; 17.06.2019
comment
Ok. Большое спасибо за Вашу помощь. Я более подробно рассмотрю объектную модель Word. - person Niels; 19.06.2019