Python-comtypes(工作)与pywin32(不工作)-使用Python创建outlook规则



(Windows 10、Office 365、Python 3.7、Pycharm(

我能够使用comtypes:在outlook中成功创建规则

import comtypes.client
o = comtypes.client.CreateObject("Outlook.Application")
rules = o.Session.DefaultStore.GetRules()
oRule = rules.Create("Test_Rule", 0)
condition = oRule.Conditions
oFromCondition = oRule.Conditions.From
oFromCondition.Enabled = True
oFromCondition.Recipients.Add("john@email.com")
oFromCondition.Recipients.ResolveAll
condition.Enabled = True
root_folder = o.GetNamespace('MAPI').Folders['x@outlook.at']
dest_folder = root_folder.Folders["Posteingang"]
move = oRule.Actions.MoveToFolder
move.__MoveOrCopyRuleAction__com__set_Enabled(True)
move.__MoveOrCopyRuleAction__com__set_Folder(dest_folder)
rules.Save()

我无法使用pywin32使其工作。当我运行以下代码时,我得到一个错误,并且无法创建规则:

import win32com.client as win32
o = win32.Dispatch("Outlook.Application")
caiok = o.GetNamespace("MAPI").Folders['x@outlook.at']
dest_folder = caiok.Folders["Posteingang"]
colRules = o.Session.DefaultStore.GetRules()
oRule = colRules.Create("New Rule10", 0)
oFromCondition = oRule.Conditions.From
oFromCondition.Enabled = True
oFromCondition.Recipients.Add("john@email.com")
oFromCondition.Recipients.ResolveAll
oMoveRuleAction = oRule.Actions.MoveToFolder
oMoveRuleAction.Enabled=True
oMoveRuleAction.Folder=dest_folder
colRules.Save()

错误:

Traceback (most recent call last):
File "D:/wwo/scrapbookIII.py", line 20, in <module>
colRules.Save()
File "<COMObject GetRules>", line 2, in Save
pywintypes.com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (4096, 'Microsoft Outlook', 'Mindestens eine Regel kann aufgrund von ungültigen Aktionen oder Bedingungen nicht gespeichert werden.', None, 0, -2147467259), None)

我做错了什么?

Python需要parens来调用函数。因此,这毫无作用:

oFromCondition.Recipients.ResolveAll

您需要:

oFromCondition.Recipients.ResolveAll()

最新更新