Powershell中一个Outlook规则的多个操作

时间:2016-03-01 08:08:57

标签: email powershell outlook powershell-ise outlook-redemption

我对Powershell中的Outlook规则有疑问。我写了一些代码,成功地将来自某个发件人的任何传入电子邮件存储到deleted-items文件夹。我这样做是因为当邮件进入垃圾文件夹时,垃圾文件夹仍然有邮件的计数器令牌,所以最后它会说我在垃圾文件夹中有10封邮件。

我想通过将来自该发件人的传入邮件丢弃到deleted-items文件夹并将邮件标记为" read"来避免这种情况。这样我就不会在已删除的项目文件夹中看到混乱。

问题是:

  • 我可以在powershell中向同一个Outlook规则添加多个操作吗?如果是这样,怎么样?
  • "运行脚本"的语法/代码是什么?动作?

到目前为止我的代码:

$ol = New-Object -ComObject Outlook.Application
$ns = $ol.GetNamespace("MAPI")

$olFolders = "Microsoft.Office.Interop.Outlook.OlDefaultFolders"
$outlook = New-Object -ComObject outlook.application
$namespace  = $Outlook.GetNameSpace("MAPI")

$inBox = $ns.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)
$deleted = $ns.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderDeletedItems)

$rules = $outlook.session.DefaultStore.GetRules()
$rule = $rules.create("Move mail: to DeletedItems", [Microsoft.Office.Interop.Outlook.OlRuleType]::olRuleReceive)

$rule_Address = $rule.Conditions.SenderAddress
$rule_Address.Enabled = $true
$rule_Address.Address = @("<Sender Address>")
$action = $rule.Actions.MoveToFolder
$action.Enabled = $true 

[Microsoft.Office.Interop.Outlook._MoveOrCopyRuleAction].InvokeMember("Folder",[System.Reflection.BindingFlags]::SetProperty,$null, $action, $deleted)

$rules.Save()

此代码到目前为止有效。

请帮忙。 谢谢!

1 个答案:

答案 0 :(得分:4)

  

我可以在PowerShell中向同一个Outlook规则添加多个操作吗?如果是这样,怎么样?

但是我得到了一个使用多个动作应用于单个规则的工作测试。它实际上很简单,您只需要重复已经完成的步骤并创建一个不同的操作变量。

在我的示例中,只显示代码的结尾,我添加了一个操作以在New Item Alert窗口中显示消息。

...
$action = $rule.Actions.MoveToFolder
$action.Enabled = $true 

$anotherAction = $rule.Actions.NewItemAlert
$anotherAction.Text = "I am awesome!"
$anotherAction.Enabled = $true 

[Microsoft.Office.Interop.Outlook._MoveOrCopyRuleAction].InvokeMember("Folder",[System.Reflection.BindingFlags]::SetProperty,$null, $action, $deleted)

$rules.Save()

你很可能已经尝试过这样的事情了。如果没有,那么您需要注意一个重要的参考。

  

“运行脚本”操作的语法/代码是什么?

这是您无法按this reference for Office 2007this one for Office 2010/2013编程设置的操作之一。这些表格类似,相当大,包括在这里,但我将参考你的第二个子弹中的那个。

Action                                              : Start a script
Constant in olRuleActionType                        : olRuleActionRunScript
Supported when creating new rules programmatically? : No
Apply to olRuleReceive rules?                       : Yes
Apply to olRuleSend rules?                          : No

还有其他人受限制。因此,在制定规则时,您需要牢记这一点。