繁体   English   中英

Python脚本可打开和关闭Outlook电子邮件规则

[英]Python Script to Turn Outlook E-Mail Rules on and Off

我正在尝试编写Python脚本/程序来关闭在Outlook 2010中创建的电子邮件规则。

通过VBA,我设法编写了一个函数,该函数将根据传入的布尔值来打开和关闭规则名称数组。

Function toggleRules(ruleNames() As String, tf As Boolean) As Boolean
Dim olRules As Outlook.Rules
Dim olRule As Outlook.Rule
Dim blnExecute As Boolean

For Each Rule In ruleNames()
  Set olRules = Application.Session.DefaultStore.GetRules
  Set olRule = olRules.Item(Rule)

  olRule.Enabled = tf

  If blnExecute Then olRule.Execute ShowProgress:=True
    olRules.Save

  Set olRules = Nothing
  Set olRule = Nothing
Next Rule

End Function

这可行,并且可以打开/关闭我通过其他VBA功能按名称发送的规则。 如果您很好奇,当前当某个主题的任务提醒触发时,它将调用此功能。

我想通过python完成此操作,因此我不仅可以使用提醒计时器来触发它,还可以通过更复杂的方式来触发它,并且出于一般原因,我更喜欢这样做。 似乎可以通过pywin32扩展来完成:

http://sourceforge.net/projects/pywin32/

但是,我很难进入“规则”界面。 我可以进入Outlook应用程序和名称空间,但似乎无法弄清楚从这里开始的去向。

import win32com.client
x = win32com.client.gencache.EnsureDispatch("Outlook.Application")
y = x.GetNamespace("MAPI")

最终,我希望基本上具有相同的功能,给定名称列表和布尔值,使其在Outlook中切换这些规则。

谢谢。

感谢您的指导,我能够弄清楚!

对于感兴趣的人,以下是基本概述,方便您到达那里并禁用该规则:

import win32com.client
x = win32com.client.gencache.EnsureDispatch("Outlook.Application")
y = x.GetNamespace("MAPI")
z = y.DefaultStore
a = z.GetRules()
b = a.Item("My Rule Name")
b.Enabled = False
a.Save()

再次感谢Eugene Astafiev

Outlook对象模型对于所有类型的应用程序(VBA,COM加载项,自动化等)都是通用的。 获得Namespace类的实例之后,您可以获取默认存储(或遍历概要文件中的所有存储)。

Namespace类的DefaultStore属性返回一个Store对象,该对象代表配置文件的默认Store。

Namespace类的Stores属性返回一个Stores集合对象,该对象表示当前配置文件中的所有Store对象。

最后,Store类提供GetRules方法,该方法返回一个Rules集合对象,该对象包含为当前会话定义的Rule对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM