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
相关产品推荐
相关产品推荐

