我希望构建一个监视Outlook中类别和文件夹更改的Python工具。
到目前为止,我设法挂钩OnNewMailEx事件并使用以下代码监控所有传入的电子邮件:
import win32com.client
import pythoncom
import re
def getPath(folder, path=[]):
if folder.parent.parent.parent:
path.append(folder.name)
getPath(folder.parent, path)
return "\\".join(reversed(path))
class Handler_Class(object):
def OnNewMailEx(self, receivedItemsIDs):
for ID in receivedItemsIDs.split(","):
mailItem = outlook.Session.GetItemFromID(ID)
if re.search("(TS)|(ST)", mailItem.Parent.FolderPath) != None:
print "Subj: " + mailItem.Subject
print "Time: " + str(mailItem.ReceivedTime)
print "Parent: " + str(mailItem.Parent.FolderPath)
# print "Body: " + mailItem.Body.encode( 'ascii', 'ignore' )
print "========"
outlook = win32com.client.DispatchWithEvents("Outlook.Application", Handler_Class)
pythoncom.PumpMessages()
现在我正在尝试扩展它以挂钩监视类别更改的事件。 MSDN就此主题提出了这个问题:https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.olkcategory.aspx
但是,当我尝试下面的代码(使用http://svn.cy55.de/changeset/1896?format=diff&new=1896中的正确名称)时,没有任何反应:
class Handler_Class(object):
def OnChange(self):
print("Hook successful!")
category = win32com.client.DispatchWithEvents("Outlook.OlkCategoryStrip", Handler_Class)
pythoncom.PumpMessages()
此外,我找不到任何监控电子邮件是否已移至其他文件夹的事件的文档。任何想法??
答案 0 :(得分:0)
您引用的OlkCategory接口绑定到Outlook窗体区域中使用的类别控件;它本身毫无用处。要监视项目的属性更改(包括类别),您需要挂钩到MailItem.PropertyChange事件:https://msdn.microsoft.com/en-us/library/ff866739.aspx。
要监控项目何时添加到文件夹,您需要为任何给定文件夹捕获Items.ItemAdd事件:https://msdn.microsoft.com/en-us/library/ff869609.aspx。