2015-06-19 61 views
1

我想寫一個Python腳本/程序關閉郵件規則我在Outlook 2010中Python腳本打開Outlook電子郵件規則和關閉

創建通過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") 

最後,我想基本上具有相同的功能,即給定的名稱和一個布爾值的列表,有它在切換後市這些規則。

謝謝。

回答

0

Outlook對象模型對於所有類型的應用程序(VBA,COM加載項,自動化等)都是通用的。獲得Namespace類的實例後,您可以獲取默認商店(或遍歷配置文件中的所有商店)。

Namespace類的DefaultStore屬性返回表示配置文件的默認存儲的Store對象。

Namespace類的Stores屬性返回Stores集合對象,該對象表示當前配置文件中的所有Store對象。

最後,Store類提供了GetRules方法,該方法返回包含爲當前會話定義的Rule對象的Rules集合對象。

0

感謝您的指導,我能夠弄明白!

對於那些有興趣,這裏有一個基本的輪廓很長的路到那裏和禁用規則:再次

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

感謝尤金Astafiev

相關問題