2012-04-14 9 views
13

Ich habe ein Skript shutdown.py erstellt, das meinen Computer herunterfährt, wenn es ausgeführt wird. Ich habe auch eine Regel in Microsoft Outlook erstellt, die mein Python-Skript ausführt, wenn ich eine E-Mail mit% BLAHBLAHBLAH% im Betreff erhalte. Ich habe es getestet und es funktioniert einwandfrei; Meine Frage für Sie alle ist jedoch: Ist es möglich, die Betreffzeile der E-Mail vor der Ausführung in das Python-Skript einzugeben? Grundsätzlich möchte ich ein Schlüsselwort in der Betreffzeile haben, das ein bestimmtes Skript ausführt, aber auch Parameter in die Betreffzeile der E-Mail "übergeben" kann, die das Python-Skript dann verwenden wird. Wenn ich zum Beispiel% shutdown30% sende, könnte mein Python-Skript die Zeichenfolge% shutdown30% parsen und die 30 als Parameter verwenden, um den Computer in 30 Minuten herunterzufahren.Microsoft Outlook Regel erstellen Anwendung/Skript ausführen Python

Vielen Dank im Voraus für jede Beratung/Kommentare/Anregungen/Antworten :)

+0

Ich weiß nicht, was Outlook tun können, aber Python kann sicherlich Kommandozeilenargumente nehmen. Check out sys.argv http://docs.python.org/library/sys.html#sys.argv Wenn Sie Outlook so etwas wie python shutdown.py% subject% machen können, dann würde sys.argv funktionieren. – joshcartme

+0

Danke, aber das ist nicht wirklich, was ich suche. Outlook ermöglicht das Erstellen von Regeln. Sie können eine Regel erstellen, die besagt, dass diese Anwendung ausgeführt werden soll, wenn Sie im Betreff eine E-Mail mit "BLAH" erhalten. Also die empfangene E-Mail mit dem angegebenen Thema löst das Python-Skript aus, die Frage ist, gibt es eine Möglichkeit, python Anblick des –

+0

empfangenen Betreffs zu geben. Ich vermute nein, aber vielleicht ist sich jemand dessen bewusst, was ich nicht bin. Danke für Ihre Antwort! –

Antwort

32

Warum eine Regel in Outlook zu schaffen, die ein Skript ausgeführt wird, wenn eine E-Mail empfangen wird, wenn Sie einfach alles aus Python zu tun.

Mit Python Outlook für alle eingehenden E-Mails überwachen und dann Code ausführen, wenn eine E-Mail mit% BLAHBLAH% im Betreff empfangen wird. Hier ein Beispiel:

import win32com.client 
import pythoncom 
import re 

class Handler_Class(object): 
    def OnNewMailEx(self, receivedItemsIDs): 
     # RecrivedItemIDs is a collection of mail IDs separated by a ",". 
     # You know, sometimes more than 1 mail is received at the same moment. 
     for ID in receivedItemsIDs.split(","): 
      mail = outlook.Session.GetItemFromID(ID) 
      subject = mail.Subject 
      try: 
       # Taking all the "BLAHBLAH" which is enclosed by two "%". 
       command = re.search(r"%(.*?)%", subject).group(1) 

       print command # Or whatever code you wish to execute. 
      except: 
       pass 


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

#and then an infinit loop that waits from events. 
pythoncom.PumpMessages() 
+1

Fantastische Ressource! Ich hatte keine Ahnung, dass Outlook auf diese Weise genutzt werden könnte. Dies eröffnet unzählige Möglichkeiten. –

+2

Ja, das ist unglaublich cool. Wie würde man das hintergehen, vielleicht als Dienst oder etwas? Es besetzt also kein Befehlsfenster. – Sushisource

+1

Das scheint sehr cool, aber könnte irgendjemand bitte mehr darüber erklären, was DispatchWithEvents macht (und wie es sich von Dispatch unterscheidet), und wie jedes Stück des obigen Skripts funktioniert? Ich habe bei Google für DispatchWithEvents wenig Tutorials gefunden, also wäre jede Hilfe großartig! – wardw123

Verwandte Themen