按特定主题进行过滤但仅限唯一/第一个实例

按特定主题进行过滤但仅限唯一/第一个实例

我有一条 Outlook 规则,任何主题中包含“危机”一词的来信都会触发该规则。问题是,我们的票务系统中的任何相应回复都会触发该规则(这意味着没有 RE: 或任何其他方式来确定它是回复)。因此,在我收到一封“危机”电子邮件(可能具有以下主题)后,随着人们讨论该票务,我无疑会在接下来的几天内收到 10-20 封主题完全相同的电子邮件。

System 2015.123.123134 C2315 CRISIS

我已经尝试了很长时间,使用标准 Outlook 规则来区分原始邮件和基于主题或正文的回复。

我可以用 VBA 来做这件事吗?为了完成这件事,我是否必须存储受试者的日志?还有其他想法吗?

答案1

这是我想出的解决方案。基本上,这是一个 VBA,它会检查特定文件夹,看看是否有任何电子邮件的主题与新收到的电子邮件相匹配。如果有,它什么也不做。如果没有匹配,它会将其复制到文件夹并发送一封具有唯一主题的新电子邮件,然后我可以对其应用另一条规则。

Sub HSAlertRule(newMail As Outlook.MailItem)
    Dim EntryID As String
    Dim StoreID As Variant
    Dim mi As Outlook.MailItem
    Dim aType As String
    Dim found As Boolean
    found = False
    Dim oMail As Outlook.MailItem
    Dim Status As String
    Static targetAccount As String
    targetAccount = "[email protected]"


    On Error GoTo ErrHandler

    EntryID = newMail.EntryID
    StoreID = newMail.Parent.StoreID

    Set mi = Application.Session.GetItemFromID(EntryID, StoreID)

    Dim objNS As Outlook.NameSpace
    Set objNS = GetNamespace("MAPI")
    Dim objFolder, objInbox, objAlerts, objFirst As Outlook.MAPIFolder

    Set objFirst = objNS.Folders.GetFirst
    Set objInbox = objNS.Folders(targetAccount).Folders("Inbox")
    Set objAlerts = objInbox.Folders("Alerts")

    For Each oMail In objFolder.Items
        If oMail.subject = mi.subject Then
            found = True
        End If
    Next

    If found Then
        'ignore
        found = False
    Else
        SendMessage()
        'separate rule on this message for desktop alerts, etc.
        mi.Move objFolder
    End If
    Set mi = Nothing
    Exit Sub

ErrHandler:
    Debug.Print Err.Description
    Err.Clear
    On Error GoTo 0
End Sub

相关内容