从查询结果中获取电子邮件后,如何发送到多封电子邮件?

时间:2019-06-14 20:07:14

标签: powershell

我有一张桌子,每个记录都有一个电子邮件地址和一个日期。我需要通过表格进行查询,如果日期少于一天,那么我需要发送到与该记录关联的电子邮件地址。

我设置了可用于测试的电子邮件发送,但是我一直无法检索所需的信息并将其发送到多个地址。查询的每一行都会有一个电子邮件地址,需要将其添加到收件人列表中。有人可以帮忙吗?

这是我到目前为止的代码。

我已经尝试过if语句,如果为true,则发送,然后从记录中检索电子邮件并添加到收件人列表中

$Username = "moc";
$Password = "xxxxxx";

function Send-ToEmail([string]$email){

    $message = new-object Net.Mail.MailMessage;
    $message.From = "moc@company.com";
    $message.To.Add($email);
    $message.Subject = "New Items Item Request";
    $message.Body = "You have new items in the Request App";

    $smtp = new-object Net.Mail.SmtpClient("hq", "host");
    $smtp.EnableSSL = $false;
    $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
    $smtp.send($message);
    write-host "Mail Sent" ; 
 }
Send-ToEmail  -email  "test@market.com","test@market.com";

同样,我已经能够将带有以上代码的电子邮件发送到测试电子邮件地址,但是我很难从每行中检索地址并将其添加到收件人列表中。

1 个答案:

答案 0 :(得分:1)

首先,修改您的函数签名以接受电子邮件地址数组:

function Send-ToEmail([string[]]$emailAddresses){

然后添加,遍历所有这些地址,并添加每个地址:

$emailAddresses | foreach {$message.To.Add($_)}