【问题标题】:Forwarding Outlook emails based on specific content in attachments根据附件中的特定内容转发 Outlook 电子邮件
【发布时间】:2019-10-27 00:12:17
【问题描述】:

根据附件内容创建用于转发电子邮件的自定义规则。我不知道如何对附件的内容使用正则表达式。

查看代码 - 我想我只为电子邮件的内容而不是附件的内容做正则表达式。

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 "a@aaa.aa"
    myForward.Display
End Sub

我希望输出为: - 转发邮件 - 新主题:[Item.Subject] & " - Next year"

要转发的邮件: - 包含包含文本的附件的电子邮件:“明年”

【问题讨论】:

  • 附件.txt或pdf或其他格式是什么
  • 附件格式为.pdf

标签: regex vba email outlook forwarding


【解决方案1】:

除了便于将附件保存到磁盘之外,Outlook 对象模型中没有任何东西可以专门提供对文件附件内容的访问。您需要为要解析的每种专有文件内容类型使用额外的 API。 VBA 确实有 Open 命令,可以让您读取文本文件。

【讨论】:

  • 好的,谢谢您的回答。只是为了确保 - 我的问题的简短答案是“否”,对吧?
  • 当然有可能,但使用 VBA 肯定会受到限制。 .NET COM 加载项将为您提供更多选择来使用其他 API 来读取各种文件内容。虽然 Word 可以打开 .pdf,但您可以使用 Word 对象模型对其进行解析。
  • 简而言之,我对 VBA 很陌生,如果我的问题很糟糕,请原谅我。如果 Word 对象模型可以打开 .pdf 并对其进行解析 - > 我是否需要下载每个 .pdf 附件(一次一封邮件)才能使用 Word 对象模型来解析文本?或者,还有更好的方法?你能帮我一些代码/伪代码吗?感谢您迄今为止的精彩回答!
  • 是的,您需要将附件保存到磁盘,以便您可以使用 Word 打开它们。如果您有关于使用 Word 的特定问题,如果您无法从自己的研究中找到答案,请发布一个单独的问题。有大量关于如何使用 Word 对象模型的文档,例如:docs.microsoft.com/en-ca/office/vba/api/overview/word。否则,StackOverflow 不是代码编写服务
  • 好的。非常感谢您的帮助。我将仔细研究 Word 对象模型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
相关资源
最近更新 更多