问题描述
(Windows 10,Office 365,Python 3.7,Pycharm)
我能够使用Comtype在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,-2147467259),None)
我在做什么错了?
解决方法
Python需要括号来调用函数。所以,这什么也没做:
oFromCondition.Recipients.ResolveAll
您需要:
oFromCondition.Recipients.ResolveAll()