PowerShell调用Outlook发邮件时如何程序化设置AIP标签
PowerShell调用Outlook发信跳过AIP手动选标签的实现方法
问题背景
使用PowerShell通过COM对象调用Outlook实现自动发信时,初始化Outlook对象的代码如下:
$Outlook = New-Object -ComObject Outlook.Application
发信流程中会触发Azure Information Protection(AIP)标签选择弹窗,必须手动选择标签才能继续发送,无法实现完全无人值守的自动发信。
可行实现方案
方案1:脚本直接写入AIP标签对应的MAPI属性
AIP标签本质是存储在邮件项上的自定义MAPI属性,只要在发送前给待发邮件写入正确的标签属性值,就可以跳过手动选择弹窗,步骤如下:
- 第一步:获取目标标签的属性值
先在Outlook中手动新建一封邮件,选择你需要自动设置的目标AIP标签并保存为草稿,选中这封草稿邮件,运行以下代码读取标签对应的属性值并记录:$Outlook = New-Object -ComObject Outlook.Application # 读取当前选中邮件的AIP标签属性 $targetLabel = $Outlook.ActiveExplorer.Selection.Item(1).PropertyAccessor.GetProperty( "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/msip_labels" ) Write-Host "记录以下AIP标签值,后续自动发信直接复用:" $targetLabel - 第二步:自动发信时直接写入标签属性
在原有自动发信逻辑中,待发邮件创建完成后、调用发送方法前,把上一步记录的标签值写入对应属性即可:# 创建新邮件 $newMail = $Outlook.CreateItem(0) $newMail.To = "test@example.com" $newMail.Subject = "自动发送测试邮件" $newMail.HTMLBody = "<p>邮件测试内容</p>" # 写入AIP标签属性,跳过弹窗 $newMail.PropertyAccessor.SetProperty( "http://schemas.microsoft.com/mapi/string/{00020386-0000-0000-C000-000000000046}/msip_labels", $targetLabel ) # 执行发送 $newMail.Send()
方案2:配置AIP客户端默认标签
如果自动发信使用的是固定邮箱账号,可以在本地AIP客户端设置中,给该账号配置默认自动应用的AIP标签,发信时会自动携带默认标签,不会触发选择弹窗。该方案不需要修改现有发信脚本,但需要确保组织AIP策略允许用户配置默认标签。
注意:如果组织AIP策略强制要求所有外发邮件必须人工确认选择标签、禁止脚本写入属性或设置默认标签,上述方法会被策略拦截,需要先联系企业IT管理员确认策略权限。
内容的提问来源于stack exchange,提问作者Prashant Shete
相关产品推荐
相关产品推荐

