我想检查特定的发件人电子邮件,并在邮件到达时自动处理它
但是,在某些情况下,我的outlook可能会重新启动,这意味着当我从发件人处收到邮件并标记为未读时
对于特定主题的新邮件的连续监视,我发现了以下代码
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
print subject
try:
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()
我甚至想查看所有未读邮件,以检查发件人的邮件是否已收到并处理(如果找到)
在handler类中是否有检查要添加的未读邮件的函数
或者让我知道其他的程序
因此,如果每次重新启动Outlook时都重新启动python脚本,则将这些行添加到代码中以检查收件箱中的未读电子邮件:
将此代码放在代码中
outlook
的定义之前编辑
对我来说,你发布的代码在我关闭Outlook,然后即使我重新打开它,我也不会收到任何新消息(请参阅我的一条评论)。我猜关闭Outlook“unlink”与
pythoncom.PumpMessages()
的事实。不管怎样,我都会过来检查类中的未读邮件Handler_Class
,并在重新启动Outlook时重新启动监视。不确定这是最好的方法,但它似乎工作的方式,你寻找。
不要从python监视outlook,尝试为该电子邮件设置outlook规则,然后通过vba启动python脚本。
下面是从VBA启动python脚本的代码。
注意:下面的代码取自here。
相关问题 更多 >
编程相关推荐