2012-04-14 1 views
13

Я создал сценарий shutdown.py, который выключает мой компьютер при его исполнении. Я также создал правило в Microsoft Outlook, которое выполняет мой скрипт Python, когда я получаю электронное письмо с% BLAHBLAHBLAH% в теме. Я проверил его, и он работает безупречно; тем не менее, мой вопрос для всех вас: возможно ли передать строку темы электронной почты в скрипт Python перед ее выполнением? В принципе, я хочу иметь ключевое слово в строке темы, которое будет выполнять определенный скрипт, но также сможет «передать» параметры в строке темы письма, которые затем будет использовать скрипт Python. Например, если я отправил% shutdown30%, мой скрипт python смог бы проанализировать строку% shutdown30% и использовать 30 в качестве параметра для выключения компьютера за 30 минут.Microsoft Outlook Создать правило запускать приложение/скрипт Python

Заранее спасибо за любые советы/замечания/предложения/ответы :)

+0

Я не знаю, что может сделать Outlook, но python, безусловно, может принимать аргументы командной строки. Проверьте sys.argv http://docs.python.org/library/sys.html#sys.argv Если вы можете сделать Outlook, сделайте что-то вроде python shutdown.py% subject%, тогда sys.argv будет работать. – joshcartme

+0

Спасибо, но это не совсем то, что я ищу. Outlook позволяет создавать правила. Вы можете создать правило, в котором говорится, что запустить это приложение, если вы получили электронное письмо с «BLAH» в теме. Таким образом, полученное электронное письмо с указанным предметом запускает скрипт python, вопрос в том, есть ли способ дать python вид –

+0

полученной теме. Я предполагаю, что нет, но, возможно, кто-то знает о чем-то, чего я не знаю. Спасибо за ваш ответ, хотя! –

ответ

32

Почему создания правила в мировоззрении, который запускает скрипт, если письмо получено, когда вы можете просто сделать все это из питона.

Использование Python для отслеживания всех входящих писем и последующего выполнения кода, если получено сообщение с% BLAHBLAH% в теме. Вот пример:

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

Фантастический ресурс! Я понятия не имел, что Outlook можно использовать таким образом. Это открывает бесчисленные возможности. –

+2

Да, это удивительно круто. Как можно сделать это, возможно, как услугу или что-то еще? Таким образом, он не занимает командное окно. – Sushisource

+1

Это кажется очень крутым, но может ли кто-нибудь объяснить больше о том, что делает DispatchWithEvents (и как он отличается от Dispatch), и о том, как работает каждая часть вышеприведенного скрипта? Я немного нашел в Google для DispatchWithEvents на пути к учебникам, поэтому любая помощь была бы замечательной! – wardw123

Смежные вопросы