如何通过PowerShell脚本设置Outlook邮件的敏感度级别?
如何通过PowerShell脚本设置Outlook邮件的敏感度级别?
嗨,我明白你遇到的问题了——你之前用的Send-MailMessage cmdlet 其实不支持直接设置Outlook的敏感度标签,而且你的代码里定义的$sensitivity变量根本没被这个命令调用,这就是它没生效的原因。下面给你两种可行的解决方案,你可以根据自己的使用场景来选:
方案一:使用本地Outlook COM对象(适合已安装Outlook客户端的场景)
这种方法是直接调用本地的Outlook应用来创建和发送邮件,能完美支持设置敏感度级别。代码示例如下:
# 初始化Outlook COM对象 $outlook = New-Object -ComObject Outlook.Application $mailItem = $outlook.CreateItem(0) # 0代表创建普通邮件项 # 配置邮件基础信息 $mailItem.To = "support@companyname.com" $mailItem.From = "support@companyname.com" $mailItem.Subject = "Subject Needed to be discussed" $mailItem.Body = Get-Content -Path "D:\Scripts\Email Content.txt" | Out-String # 添加附件 $attachmentPath = "D:\Scripts\test.csv" $mailItem.Attachments.Add($attachmentPath) # 设置敏感度级别 # 对应Outlook的枚举值: # 0 = Normal(默认) # 1 = Personal # 2 = Private # 3 = Confidential(对应你需要的"Restricted"级别) $mailItem.Sensitivity = 3 # 发送邮件 $mailItem.Send() # 清理COM对象,避免内存占用 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($mailItem) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook) | Out-Null
注意:使用这种方法需要本地安装Outlook客户端,首次运行可能会弹出Outlook的安全提示,你可以通过配置Outlook的信任设置来避免重复提示。
方案二:使用Exchange Online PowerShell模块(适合云端Exchange环境)
如果你是在Exchange Online环境下操作,建议使用Exchange Online Management模块来发送邮件并应用敏感度标签。首先确保你已经安装并连接了Exchange Online模块,然后可以参考以下步骤:
- 先获取你需要的敏感度标签的GUID(比如名为"Restricted"的标签):
Get-Label | Where-Object {$_.DisplayName -eq "Restricted"} | Select-Object Name, Guid
- 使用
Send-MailMessage结合自定义邮件头来应用标签:
# 定义邮件参数 $params = @{ To = "support@companyname.com" From = "support@companyname.com" Subject = "Subject Needed to be discussed" Body = Get-Content -Path "D:\Scripts\Email Content.txt" | Out-String Attachment = "D:\Scripts\test.csv" SmtpServer = "relay.companyname.com" Headers = @{"X-MS-Exchange-Organization-Sensitivity-Label" = "你的标签GUID"} } # 发送邮件 Send-MailMessage @params
注意:这种方法需要你的SMTP服务器支持传递自定义敏感度标签头,并且Exchange Online中已经创建了对应的敏感度标签。
希望这两种方法能帮你解决问题!
备注:内容来源于stack exchange,提问作者Karthik Semban
相关产品推荐
相关产品推荐

