我不确定如何对这个问题进行说明,这样才有意义。 我有一个包含用户,经理和经理电子邮件地址的CSV。 Manager和Manager电子邮件地址列将包含重复项,但已排序。见下图。
我想向管理员发送一封电子邮件,内容和收件人动态地基于CSV。
$Outlook = New-Object -comObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.Recipients.Add("sally@x.com")
$Mail.Subject = "People"
$Mail.Body = "Bob, John, Joe"
$Mail.Send()
这不是问题,我理解。我需要知道的是,每个经理只发送一封电子邮件。
例如,电子邮件1将发送到Sally@x.com,内容将是Bob,John,Joe。电子邮件2将以内容Joe发送至Brian@x.com。电子邮件3将发送至Joey@x.com,内容为Ally,Alex。
我不能拥有的是每位用户发送给经理的一封电子邮件。换句话说,莎莉收到3封电子邮件,乔伊收到2封。
我甚至无法弄清楚从哪里开始。我觉得因为它已经排序了,我应该能够在列表中做一个foreach独特的managermail ...
非常感谢任何帮助。
答案 0 :(得分:3)
这样的事情应该会有所帮助。
$uniqMailList = Import-Csv .\your.csv | Select -expand ManagerMail -Unique
foreach ($mailItem in $uniqMailList)
{
$names = Import-Csv .\your.csv | Where-Object {$_.ManagerMail -eq "$mailItem"} | Select -expand User;
$Outlook = New-Object -comObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.Recipients.Add($mailItem)
$Mail.Subject = "People"
$Mail.Body = $names
$Mail.Send()
}
答案 1 :(得分:0)
试试这个:
$Outlook = New-Object -comObject Outlook.Application
$liste=import-csv -Path C:\temp\myliste.csv -Delimiter ";" | group ManagerMail | select name, @{N="Users";E={$_.group.User -join ", "}}
foreach ($item in $liste)
{
$Mail = $Outlook.CreateItem(0)
$Mail.Recipients.Add($item.Name)
$Mail.Subject = "People"
$Mail.Body = $item.Users
$Mail.Send()
}
答案 2 :(得分:0)
这就是我最终的工作:
$file = Import-Csv C:\TEST.CSV |
select -Expand managermail -Unique
foreach ($item in $file)
{
$names = Import-Csv C:\TEST.CSV | Where-Object {$_.ManagerMail -eq "$item"} | Select -expand user
$Outlook = New-Object -comObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.Recipients.Add($item)
$Mail.Subject = "People"
$Mail.Body = "$names"
$Mail.Send()
}