根据附件文件向谁发送电子邮件

时间:2019-06-20 21:08:15

标签: powershell

在不使用大量ElseIf语句的情况下,是否可以在迭代文件夹中的所有文件时基于将附加到电子邮件的文件来选择电子邮件的收件人?

我已经开始构建此程序,而foreach get-ChildItem不在我创建电子邮件对象的文件夹上运行,分配特定的收件人并从文件夹中选择特定的文件,但这非常繁琐且重复。我觉得必须有一种方法来使用数组数组或其他东西,其中基于循环所基于的文件来拉动收件人,也可能是自定义主题行。

这里有大量的Powershell电子邮件代码,因此我不会将其重新发布。只是不确定如何攻击它。

1 个答案:

答案 0 :(得分:0)

一个选择是拥有一个伴随的CSV文件,其中包含文件名,收件人和主题名称等行。然后,您可以使用 Import-Csv 导入CSV文件。

例如:

$emailList = Import-csv c:\users.csv

foreach ($line in $emailList) {
  Write-Host "Sending message to $($line.emailAddress)"
  Send-MailMessage -To $line.emailAddress `
    -Subject $line.subject `
    -Attachments $line.attachmentPath `
    -Body $line.bodyText
}

,如果您想在PowerShell脚本中定义CSV的内容,而不是使用外部文件,则可以执行以下操作:

$emailList = "emailAddress,subject,attachmentPath,bodyText
joe@bloggs.com,Attachment for Joe,c:\attachmentsToSend\joe.pdf,Attached is your file
Mary@bloggs.com,Mary's attachment,c:\attachmentsToSend\mary.pdf,Hello, Mary. Attached is your file
" | ConvertFrom-Csv

将其放在脚本的 foreach 循环上方