gpt4 book ai didi

python - 使用 win32com 设置属性

转载 作者:太空狗 更新时间:2023-10-30 01:30:16 40 4
gpt4 key购买 nike

我正在尝试自动创建一堆 Outlook 规则。我使用的是 Python 2.7、win32com 和 Outlook 2007。为此,我必须创建一个新的 Rule 对象并为其移动操作指定一个文件夹。但是,我无法成功设置 Folder 属性——尽管我提供了正确类型的对象,它仍然保持 None。

import win32com.client
from win32com.client import constants as const

o = win32com.client.gencache.EnsureDispatch("Outlook.Application")
rules = o.Session.DefaultStore.GetRules()

rule = rules.Create("Python rule test", const.olRuleReceive)
condition = rule.Conditions.MessageHeader
condition.Text = ('Foo', 'Bar')
condition.Enabled = True

root_folder = o.GetNamespace('MAPI').Folders.Item(1)
foo_folder = root_folder.Folders['Notifications'].Folders['Foo']

move = rule.Actions.MoveToFolder
print foo_folder
print move.Folder
move.Folder = foo_folder
print move.Folder

# move.Enabled = True
# rules.Save()

打印

<win32com.gen_py.Microsoft Outlook 12.0 Object Library.MAPIFolder instance at 0x51634584>NoneNone

我查看了在非动态模式下使用 win32com 时 makepy 生成的代码。 _MoveOrCopyRuleAction 类在其 _prop_map_put_ 字典中有一个用于 'Folder' 的条目,但除此之外我很困惑。

最佳答案

使用 comtypes.client 而不是 win32com.client 你可以:

import comtypes.client

o = comtypes.client.CreateObject("Outlook.Application")
rules = o.Session.DefaultStore.GetRules()

rule = rules.Create("Python rule test", 0 ) # 0 is the value for the parameter olRuleReceive
condition = rule.Conditions.Subject # I guess MessageHeader works too
condition.Text = ('Foo', 'Bar')
condition.Enabled = True

root_folder = o.GetNamespace('MAPI').Folders.Item(1)
foo_folder = root_folder.Folders['Notifications'].Folders['Foo']

move = rule.Actions.MoveToFolder
move.__MoveOrCopyRuleAction__com__set_Enabled(True) # Need this line otherwise
# the folder is not set in outlook
move.__MoveOrCopyRuleAction__com__set_Folder(foo_folder) # set the destination folder

rules.Save() # to save it in Outlook

我知道它不适用于 win32com.client,但也不适用于 IronPython!

关于python - 使用 win32com 设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7089496/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com