【问题标题】:Python Script to Turn Outlook E-Mail Rules on and Off用于打开和关闭 Outlook 电子邮件规则的 Python 脚本
【发布时间】:2015-09-06 01:15:35
【问题描述】:

我正在尝试编写 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 中切换这些规则。

谢谢。

【问题讨论】:

    标签: python vba outlook rules


    【解决方案1】:

    感谢指导,我已经搞定了!

    对于那些感兴趣的人,这里有一个基本的大纲来实现并禁用该规则:

    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()
    

    再次感谢尤金·阿斯塔菲耶夫

    【讨论】:

      【解决方案2】:

      Outlook 对象模型适用于所有类型的应用程序(VBA、COM 插件、自动化等)。获得 Namespace 类的实例后,您可以获得默认存储(或遍历配置文件中的所有存储)。

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-18
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 1970-01-01
        相关资源
        最近更新 更多