VBA in Outlook zu bekommen "geantwortet" oder "weitergeleitet" - status der E-Mail-Konversation?
Ich habe ein VBA-Skript in outlook ist so ausgelegt, dass eine automatische E-Mail-handling, basierend auf, wenn Elemente sind in Ordnern abgelegt. Das funktioniert wie vorgesehen, aber ich bin versucht zu machen, ein wenig intelligenter, so dass das Skript sehen können, ob oder nicht das E-Mail wird in den Ordner beantwortet.
Derzeit ist der moment, in dem ein E-mail-platziert im Ordner "X", das Skript sendet eine automatische Antwort an die E-Mail und dann markiert die mail als ungelesen. Allerdings, wenn eine mail bereits als markiert "antwortete", unabhängig davon, ob das Skript antwortete auf die mail oder wenn jemand geschickt eine Antwort, bevor Sie die mail in den Ordner X, ich möchte sicherstellen, dass das Skript NICHT sendet eine Antwort, und einfach markiert die mail als ungelesen. Ist das etwas, dass Sie durch das Lesen von IMAP-tags-Eigenschaft? Wenn ja, welcher tag bin ich auf der Suche nach? Ich habe gekämpft, um herauszufinden, wie dies zu erreichen. Jede Hilfe würde geschätzt werden.
Referenz, hier ist das Skript, das ich habe (mit Daten zur Identifizierung entfernt):
Hinweis: ich bin mir bewusst, ich habe einige Variablen deklariert, aber nicht verwiesen. Ich werde diese später für etwas anderes.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Immobilie, die Sie nach PR_LAST_VERB_EXECUTED (DASL name ist
http://schemas.microsoft.com/mapi/proptag/0x10810003
); Sie sollten in der Lage sein, um den Zugriff aufMailItem.PropetyAccessor.GetProperty
.Werfen Sie einen Blick auf eine Nachricht mit OutlookSpy - klicken Sie auf "IMessage" - Taste, um die verfügbaren MAPI-Eigenschaften.