VBA w programie Outlook, aby uzyskać status „odpowiedzi” lub „przekierowania” w rozmowie e-mail?
Mam skrypt VBA w programie Outlook, który jest zaprojektowany do automatycznego przetwarzania wiadomości e-mail w oparciu o to, kiedy elementy są umieszczane w folderach. Działa to zgodnie z przeznaczeniem, ale staram się, aby było to trochę bardziej inteligentne, aby skrypt mógł sprawdzić, czy wiadomość e-mail umieszczona w folderze została udzielona.
Obecnie, gdy wiadomość jest umieszczana w folderze X, skrypt wysyła automatyczną odpowiedź na wiadomość e-mail, a następnie oznacza wiadomość jako nieprzeczytaną. Jeśli jednak wiadomość została już oznaczona jako „odpowiedź”, niezależnie od tego, czy skrypt odpowiedział na wiadomość, czy ktoś wysłał odpowiedź przed umieszczeniem wiadomości w folderze X, chcę się upewnić, że skrypt NIE wysyła odpowiedzi, i po prostu oznacza pocztę jako nieprzeczytaną. Czy jest to możliwe, czytając znaczniki właściwości IMAP? Jeśli tak, to jakiego tagu szukam? Starałem się dowiedzieć, jak to osiągnąć. Każda pomoc byłaby doceniana.
Dla odniesienia, oto skrypt, który mam (z usuniętymi danymi identyfikacyjnymi):
Uwaga: Zdaję sobie sprawę, że mam kilka zadeklarowanych zmiennych, ale nie ma do nich odniesienia. Użyję ich później do czegoś innego.
Option Explicit
'##############################################
'### all code for the ThisOutlookSession module
'### Module level Declarations
'expose the items in the target folder to events
Dim WithEvents ackSpamMsgs As Items
Dim WithEvents ackPhishMsgs As Items
Dim WithEvents fwdMsgs As Items
'###############################################
Private Sub Application_Startup()
'some startup code to set our "event-sensitive"
'items collection
Dim objNS As Outlook.NameSpace
Dim ackFolder As Folder
Dim compFolder As Folder
Set objNS = Application.GetNamespace("MAPI")
Set ackMsgs = objNS.Folders("Inbox").Folders("Folder X").Items
Set fwdMsgs = objNS.Folders("Inbox").Folders("Folder Y").Items
End Sub
'#################################################
'### this is the ItemAdd event code
Sub ackMsgs_ItemAdd(ByVal Item As Object)
'when a new item is added to our "watched folder"
'we can process it
Dim msg As MailItem
Set msg = Item.Reply
'This is where I want to check if the mail has been replied to, and skip the "with"
'below if it has been replied to.
With msg
.Subject = "RE: " & Item.Subject
.HTMLBody = "Body of email here"
.Send
Set msg.UnRead = True
End With
End Sub
Sub fwdMsgs_ItemAdd(ByVal Item As Object)
Dim msg As MailItem
Dim newMsg As MailItem
Set msg = Item.Forward
msg.Recipients.Add ("[email protected]")
msg.Send
End Sub
'#################################################
Private Sub Application_Quit()
Dim objNS As Outlook.NameSpace
Set ackMsgs = Nothing
Set fwdMsgs = Nothing
Set objNS = Nothing
End Sub