Powershell 解析电子邮件地址文件以设置电子邮件收件人
我正在尝试编写一个PowerShell脚本,它解析电子邮件地址列表并向它们发送邮件 文件的格式如下: a.a@domain.com b.b@domain.com c.c@domain.com ...Powershell 解析电子邮件地址文件以设置电子邮件收件人,powershell,Powershell,我正在尝试编写一个PowerShell脚本,它解析电子邮件地址列表并向它们发送邮件 文件的格式如下: a.a@domain.com b.b@domain.com c.c@domain.com ... $recipients = Get-Content -Path MY_FILE.txt $outlook = New-Object -ComObject Outlook.Application ForEach ($recipient in $recipients) { $mail = $O
$recipients = Get-Content -Path MY_FILE.txt
$outlook = New-Object -ComObject Outlook.Application
ForEach ($recipient in $recipients) {
$mail = $Outlook.CreateItem(0)
$mail.To = $recipient
$mail.Subject = "MY_SUBJECT"
$mail.HTMLBody = "MY_HTML_BODY"
$mail.Send()
}
如您所见,我的问题是:如何将
$recipients
中的地址分配给$mail.to
?如果您想将文件中的每个地址发送到单独的电子邮件,请按以下方式执行:
a.a@domain.com
b.b@domain.com
c.c@domain.com
...
$recipients = Get-Content -Path MY_FILE.txt
$outlook = New-Object -ComObject Outlook.Application
ForEach ($recipient in $recipients) {
$mail = $Outlook.CreateItem(0)
$mail.To = $recipient
$mail.Subject = "MY_SUBJECT"
$mail.HTMLBody = "MY_HTML_BODY"
$mail.Send()
}
另外,请确保通过在文件末尾添加以下内容来关闭COM对象:
$outlook.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook) | Out-Null
您可以尝试以下方法:
$file = "$PSScriptRoot\MY_FILE.txt"
# Add a List of recipients
$to = @()
foreach ($email in (Get-Content $file)) {
$to += "$email;"
}
Write-Host "Complete recipient-list: $to"
$outlook = New-Object -ComObject Outlook.Application
$mail = $Outlook.CreateItem(0)
$mail.To = "$to"
$mail.Subject = "MY_SUBJECT"
$mail.HTMLBody = "MY_HTML_BODY"
$mail.Send()
如有疑问,请阅读:
MailItem.To属性(Outlook)
返回或设置Outlook项目的收件人的显示名称的分号分隔字符串列表。
读/写
[……]
评论
此属性仅包含显示名称。收件人属性对应于MAPI属性PidTagDisplayTo应使用收件人集合修改此属性。
我的
要向所有收件人发送一封邮件,请更改此行:
$mail.To = $recipients
为此:
foreach ($addr in $recipients) {
$mail.Recipients.Add($addr)
}
代码应该满足您的要求。您是要一次向多个收件人发送一封邮件,还是为每个收件人发送一封单独的邮件?一次向多个收件人发送一封邮件。