17

我创建了一个shutdown.py 脚本来关闭我的计算机。
我在 Microsoft Outlook 中有一个工作规则,当我收到主题中包含 %BLAHBLAHBLAH% 的电子邮件时,它会执行我的 Python 脚本。

是否可以在执行之前将电子邮件的主题行传递到 Python 脚本中?
基本上,我希望主题行中有一个关键字来执行某个脚本,但也能够将参数“传递”到电子邮件的主题行到 Python 脚本。
例如,如果我发送 %shutdown30% 我的 python 脚本将解析字符串 %shutdown30% 并使用 30 作为参数在 30 分钟内关闭计算机。

4

1 回答 1

46

当您可以简单地从 python 中完成所有操作时,为什么要在 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() 
于 2012-05-10T17:17:39.450 回答