Python &引用;无效的行为或条件”;以编程方式创建outlook规则时

Python &引用;无效的行为或条件”;以编程方式创建outlook规则时,python,vba,powershell,outlook,Python,Vba,Powershell,Outlook,遵循多种语言的多个指南,我无法创建简单的Outlook规则将电子邮件从指定的收件人移动到指定的文件夹。在Powershell和Python中尝试时,我得到了基本相同的错误: 由于操作或条件无效,无法保存一个或多个规则 以下是powershell代码: Add-Type -assembly "Microsoft.Office.Interop.Outlook" $objOutlookApp = New-Object -ComObject Outlook.Application $

遵循多种语言的多个指南,我无法创建简单的Outlook规则将电子邮件从指定的收件人移动到指定的文件夹。在Powershell和Python中尝试时,我得到了基本相同的错误:

由于操作或条件无效,无法保存一个或多个规则

以下是powershell代码:

Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$objOutlookApp = New-Object -ComObject Outlook.Application
$objOutlookNS = $objOutlookApp.GetNameSpace("MAPI")

$objAccountStore = $objOutlookNS.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)

$objDestFolder = $objOutlookNS.Folders.Item('2020-Q2').Folders.Item('test')

$objRulesCol = $objOutlookNS.DefaultStore.GetRules()

$objRule = $objRulesCol.create("Test_Rule", [Microsoft.Office.Interop.Outlook.OlRuleType]::olRuleReceive)

$objRule.Conditions.From.Enabled = $true
$objRule.Conditions.From.Recipients.Add("employee1@companya.com")
$objRule.Conditions.From.Recipients.ResolveAll()

$objRule.Actions.MoveToFolder.Folder = $objDestFolder
$objRule.Actions.MoveToFolder.Enabled = $true

$objRulesCol.Save()
以及基本上执行以下步骤的python代码:

import win32com.client

OlRuleType = {
    'olRuleReceive' : 0,
    'olRuleSend' : 1
}


# get handle for running outlook process
objOutlookApp = win32com.client.Dispatch("Outlook.Application")
objOutlookNS = objOutlookApp.GetNamespace("MAPI")

# get the server account folder handle
objAccountStore = objOutlookNS.Stores.Item("test@mycompany.com")

#get the destination folder for the rule. The destination folder in the server account
objAccountRootFolder = objAccountStore.GetRootFolder()
objDestFolder = objAccountRootFolder.Folders["inbox"]
#objDestFolder = objAccountRootFolder.Folders[2] #for dealing with Japanese folder name for inbox. Need to learn how to handle Kanji 

#example of getting a folder in a PST file
#objPSTstore = objOutlookNS.Stores.Item("pst_store_name")
#objPSTrootFolder = objPSTstore.GetRootFolder()
#objDestFolder = objPSTrootFolder.Folders["pst_folder_name"]


# get rules from the server account
objRulesCol = objAccountStore.GetRules()

objRule = objRulesCol.Create("Test_python", OlRuleType['olRuleReceive'])

objConditionCol = objRule.Conditions
oFromCondition = objConditionCol.From

objRecipient = oFromCondition.Recipients.Add("employee1@companya.com")
oFromCondition.Recipients.ResolveAll()
objRecipient = oFromCondition.Recipients.Add("employee2@companyb.com")
oFromCondition.Recipients.ResolveAll()
oFromCondition.Enabled = True


objActionCol = objRule.Actions
objMoveAction = objActionCol.MoveToFolder

objMoveAction.Folder = objDestFolder
objMoveAction.Enabled = True

objRule.Enabled = True
objRulesCol.Save()
这些步骤源自Microsoft的VBA Outlook模型示例:


关于缺少什么或什么不正确,您有什么想法吗?

您不应该在这里的代码中使用卷曲的“智能引号”:
“employee1@companya.com“
@Theo虽然这并不能解决实际问题,但感谢您指出了错误。文本已用正确的引号编辑。