You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过EWS读取邮件的PowerShell脚本:获取抄送/密送收件人失败

修正EWS PowerShell脚本获取CC/BCC的问题

嘿,我帮你揪出代码里的几个关键问题啦,咱们一步步来修正:

  • 变量名缺少$前缀:PowerShell里所有变量都必须加$,你循环里的Recipient和recip都没加,PowerShell根本识别不了这些变量,得改成$Recipient。
  • Recipient.Type枚举值搞反了:EWS的RecipientType枚举规则是:1是主收件人(To),2是抄送(CC),3才是密送(BCC),你原来把Type=1当成CC,完全搞反了逻辑!
  • 未定义变量+逻辑错误:你代码里用到的CCEmailAddress根本没声明,而且判断是否加分号的逻辑应该针对$carboncopy和$blindcarboncopy本身,不是这个不存在的变量。
  • 收件人地址属性调用错误:EWS里收件人的邮件地址需要通过$Recipient.EmailAddress.Address获取,直接用recip.Address可能拿到的是AD对象而不是邮箱地址。

修正后的完整代码

$carboncopy = ""
$blindcarboncopy = ""

foreach ($Recipient in $MailItem.Recipients) {
    # 匹配抄送(CC)收件人,Type=2
    if ($Recipient.Type -eq 2) {
        if ($carboncopy.Length -gt 0) {
            $carboncopy += ";"
        }
        $carboncopy += $Recipient.EmailAddress.Address
    }
    # 匹配密送(BCC)收件人,Type=3
    if ($Recipient.Type -eq 3) {
        if ($blindcarboncopy.Length -gt 0) {
            $blindcarboncopy += ";"
        }
        $blindcarboncopy += $Recipient.EmailAddress.Address
    }
}

# 可选:输出结果验证
Write-Host "抄送地址: $carboncopy"
Write-Host "密送地址: $blindcarboncopy"

额外小提示

如果不确定收件人的Type值对应关系,可以在循环里加一行调试代码,先确认每个收件人的类型:

Write-Host "收件人类型: $($Recipient.Type), 邮箱地址: $($Recipient.EmailAddress.Address)"

要是遇到收件人是邮件组的情况,你可能需要额外处理展开组成员的逻辑,但如果只是获取表层的CC/BCC地址,上面的代码就足够用啦。

内容的提问来源于stack exchange,提问作者Big Al

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:32:47