2016-07-11 2 views
0

Ich bin auf der Suche nach einem Python-Tool, das Kategorien- und Ordneränderungen in Outlook überwacht.Monitor für Kategorie/Ordner ändern in Outlook mit Python

Bisher konnte ich in das OnNewMailEx Ereignis einzuhaken und für alle eingehenden E-Mails überwachen unter Verwendung des Codes:

import win32com.client 
import pythoncom 
import re 

def getPath(folder, path=[]): 
    if folder.parent.parent.parent: 
     path.append(folder.name) 
     getPath(folder.parent, path) 
    return "\\".join(reversed(path)) 

class Handler_Class(object): 
    def OnNewMailEx(self, receivedItemsIDs): 
     for ID in receivedItemsIDs.split(","): 
      mailItem = outlook.Session.GetItemFromID(ID) 
      if re.search("(TS)|(ST)", mailItem.Parent.FolderPath) != None: 
       print "Subj: " + mailItem.Subject 
       print "Time: " + str(mailItem.ReceivedTime) 
       print "Parent: " + str(mailItem.Parent.FolderPath) 
       # print "Body: " + mailItem.Body.encode('ascii', 'ignore') 
       print "========" 

outlook = win32com.client.DispatchWithEvents("Outlook.Application", Handler_Class) 
pythoncom.PumpMessages() 

Jetzt versuche ich, diese zu erweitern in die Ereignisse einzuhaken, die Kategorie Änderungen überwachen. MSDN hat dies zum Thema: https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.olkcategory.aspx

Allerdings, wenn ich den Code unten versucht (mit den richtigen Namen von http://svn.cy55.de/changeset/1896?format=diff&new=1896), passiert nichts:

class Handler_Class(object): 
    def OnChange(self): 
     print("Hook successful!")  

category = win32com.client.DispatchWithEvents("Outlook.OlkCategoryStrip", Handler_Class) 
pythoncom.PumpMessages() 

Außerdem kann ich keine Dokumentation für Veranstaltungen Diese Überwachung, wenn eine E-Mail in einen anderen Ordner verschoben wurde. Irgendwelche Ideen??

Antwort

0

Die OlkCategory-Schnittstelle, auf die Sie verweisen, ist an das Categories-Steuerelement gebunden, das in Outlook-Formularregionen verwendet wird. es ist nutzlos für sich. Um Eigenschaftenänderungen (einschließlich Kategorien) eines Elements zu überwachen, müssen Sie das MailItem.PropertyChange-Ereignis haken: https://msdn.microsoft.com/en-us/library/ff866739.aspx.

Um zu überwachen, wenn ein Element zu einem Ordner hinzugefügt wird, müssen Sie das Items.ItemAdd -Ereignis für einen bestimmten Ordner abfangen: https://msdn.microsoft.com/en-us/library/ff869609.aspx.

+0

Hallo Eric, Danke für das Zurückkommen. Ein paar Fragen: 1. Wie gehst du in das "PropertyChange"/"ItemAdd" Event ein? Ich denke nicht, dass es so einfach ist wie ein def OnPropertyChange (self, name) zu meiner Handler_Class oben hinzuzufügen? Muss ich ein neues "DispatchWithEvents" erstellen? 2. Kann ich verfolgen, wer die Immobilie geändert hat/den Gegenstand verschoben hat? – Vlad

+0

Sorry, ich weiß Python nicht. Ich kann nur sagen, dass PropertyChange ein Ereignis der MailItem-Klasse und ItemAdd eine Eigenschaft der Items-Auflistungsklasse ist (die von der Items-Eigenschaft eines Folder-Objekts abgerufen wird). Das "wer" wäre immer der aktuelle Benutzer, den Sie über die Eigenschaft NameSpace.CurrentUser erhalten können. –

+0

Hallo, also wie würdest du diese Veranstaltung in VBA einhängen? – Vlad