我有一条 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