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

SSIS通过PowerShell发送邮件仅最后一个收件人收到的问题排查

问题解决:SSIS仅发送邮件给最后一个收件人

问题根源

你的PowerShell代码中,将字符串数组直接拼接到dtexec命令时,PowerShell会自动把数组转为空格分隔的字符串,导致SSIS的ToLine变量值为abc@gmail.com def@gmail.com ghi@gmail.com。而SSIS发送邮件任务仅支持分号或逗号分隔的收件人列表,空格会被视为无效分隔符,最终只有最后一个邮箱被识别为有效收件人(ControlM的解析逻辑特殊,所以能正常处理)。

修正代码

修改file2中的PowerShell脚本:

# 拆分收件人并过滤空值(避免多余分号导致的无效项)
$recipientArray = $Email_List -split ';' | Where-Object { $_ -trim() -ne '' }
# 用分号拼接为符合SSIS要求的字符串格式
[string]$SendMail = $recipientArray -join ';'
# 正确构造dtexec的/SET参数,转义双引号确保值被完整传递
$strcmd += " /SET \Package.Variables[User::ToLine].Properties[Value];`"$SendMail`" "

关键验证

执行前输出$strcmd,确认/SET参数段格式如下:

/SET \Package.Variables[User::ToLine].Properties[Value];"abc@gmail.com;def@gmail.com;ghi@gmail.com"

额外确认

  • SSIS变量ToLine必须是**字符串(String)**类型,不能是数组
  • 发送邮件任务的To属性表达式需直接绑定@[User::ToLine],无额外修改

内容的提问来源于stack exchange,提问作者Tirtha Shrestha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:34:59