2012-04-14 5 views
13

실행할 때 컴퓨터를 종료하는 shutdown.py 스크립트를 만들었습니다. 또한 주제에 % BLAHBLAHBLAH %의 이메일을받을 때 Python 스크립트를 실행하는 Microsoft Outlook의 규칙을 만들었습니다. 나는 그것을 시험했으며 완벽하게 작동한다. 그러나, 내 질문에 대한 모든 : 그것은 실행하기 전에 전자 메일의 제목 줄을 파이썬 스크립트로 전달할 수 있습니까? 기본적으로 특정 스크립트를 실행하는 제목 줄에 키워드를 갖고 싶지만 파이썬 스크립트가 사용할 전자 메일의 제목 줄에 매개 변수를 "전달"할 수도 있습니다. 예를 들어 % shutdown30 %를 전송하면 내 파이썬 스크립트는 % 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"가 포함 된 이메일을 수신하면이 애플리케이션을 실행하라는 규칙을 만들 수 있습니다. 지정된 피사체를 가진 수신 된 전자 메일이 파이썬 스크립트를 트리거하므로, 질문은 –

+0

받은 피사체의 파이썬 광경을 줄 수있는 방법입니다. 나는 아니 겠지만 누군가가 내가 아는 어떤 것을 알고있을 수도 있습니다. 귀하의 답변을 주셔서 감사합니다! –

답변

32

당신이 파이썬에서 모든 것을 할 간단하게 할 수있을 때 이메일이 수신되면 스크립트를 실행 Outlook에서 규칙을 만드는 이유.

Python을 사용하여 들어오는 모든 전자 메일에 대한 Outlook을 모니터링 한 다음 제목에 % 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와 어떻게 다른지)에 대해 더 자세히 설명해 줄 수 있습니까? 그리고 위의 스크립트가 어떻게 작동합니까? 튜토리얼에서 DispatchWithEvents에 대한 Google의 발견이 거의 없으므로 도움이 될 것입니다. – wardw123

관련 문제