如何向具有基于 CSV 内容的唯一收件人组发送电子邮件
How to send an email to a UNIQUE group of recipients with contents based on CSV
我不确定如何表达这个问题才有意义。
我有一个包含用户、经理和经理电子邮件地址的 CSV。经理和经理电子邮件地址列将包含重复项,但已排序。见下图。
我想向经理发送一封电子邮件,其中的内容和收件人是动态基于 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 将发送至 Brian@x.com,内容为 Joe。电子邮件 3 将发送至 Joey@x.com,内容为 Ally、Alex。
我不能拥有的是向每位用户发送一封电子邮件给经理。换句话说,Sally 收到 3 封电子邮件,Joey 收到 2 封。
我什至不知道从哪里开始。我觉得因为它是排序的,所以我应该能够在列表中做一个 foreach unique managermail ...
如有任何帮助,我们将不胜感激。
这样的事情应该有所帮助。
$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()
}
试试这个:
$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()
}
这是我终于开始工作的:
$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()
}
我不确定如何表达这个问题才有意义。 我有一个包含用户、经理和经理电子邮件地址的 CSV。经理和经理电子邮件地址列将包含重复项,但已排序。见下图。
我想向经理发送一封电子邮件,其中的内容和收件人是动态基于 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 将发送至 Brian@x.com,内容为 Joe。电子邮件 3 将发送至 Joey@x.com,内容为 Ally、Alex。
我不能拥有的是向每位用户发送一封电子邮件给经理。换句话说,Sally 收到 3 封电子邮件,Joey 收到 2 封。
我什至不知道从哪里开始。我觉得因为它是排序的,所以我应该能够在列表中做一个 foreach unique managermail ...
如有任何帮助,我们将不胜感激。
这样的事情应该有所帮助。
$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()
}
试试这个:
$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()
}
这是我终于开始工作的:
$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()
}