我正在创建一个连接到SQL的脚本,提取数据集并对其进行格式化。然后我需要向每个团队的经理发送电子邮件以及一个Html表格,我不能想到继续下半年的最佳方式。
数据的格式如下:Team | Item | Manager email
每个项目都是唯一的,因此可以在同一个团队和同一个电子邮件旁边显示一些项目
以下类似的东西是可行的:
For each $_.ManagerEmail in $dataset ( build html output containing each unique item)
他们显然只会收到一封电子邮件而不是每件商品一封 有什么想法或指示吗?
编辑: 谢谢你输入的人。我试图实现Mathias'建议,但脚本现在完成没有输出或错误。我知道SQL部分工作正常所以问题在这里。
foreach($ManagerSet in $Dataset.Rows |Group-Object "Manager Email")
{
$Items = $ManagerSet.Group |Select-Object Item
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = $ManagerSet.ManEmails
$Mail.Subject = "Test" $Mail.Body = 'Testing. Failures include' + $managerset.itemname + $managerset.Info1 $Mail.Send()
}
关于我错过的任何指示?
答案 0 :(得分:1)
我建议通过"经理电子邮件"对数据表中的行进行分组。列,然后每组发送一封电子邮件:
foreach($ManagerSet in $Datatable.Rows |Group-Object "Manager Email")
{
$Items = $ManagerSet.Group |Select-Object Item
# Compose email containing $Items in here.
# You can refer to the email address via $ManagerSet.Name
}
通过这种方式,您可以为每个团队/经理发送一封包含所有相关项目的电子邮件
答案 1 :(得分:0)
我们应该使用Invoke-SQlCmd用户将SQL数据作为数据表输出,以使其工作。但即使在那之后,Item的任何值都不会返回