通过身份验证向多个收件人发送电子邮件

Cas*_*adc 2 email powershell

我正在尝试通过 Powershell 发送电子邮件。我可以使用下面的代码毫无问题地向一位收件人发送电子邮件。但是,当我向$EmailTo变量添加第二个收件人时,我没有收到电子邮件。我也没有收到任何错误。我做了一些研究,似乎 SMTP 客户端发送电子邮件的方式不需要多个收件人。

$EmailFrom = "sender@email.com" 
$EmailTo = "recipient1@email.com"
$EmailBody = "Test Body" 
$EmailSubject = "Test Subject"
$Username = "carlos@email.com"
$Password = "12345"

$Message = New-Object Net.Mail.MailMessage($EmailFrom, $EmailTo, $EmailSubject, $EmailBody)
$SMTPClient = New-Object Net.Mail.SmtpClient("smtp.com", 123) #Port can be changed 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$SMTPClient.Send($Message)
Run Code Online (Sandbox Code Playgroud)

我尝试使用该Send-MailMessage命令,但它给我带来了问题。

Send-MailMessage -from $EmailFrom -to $EmailTo -Subject $EmailSubject `
  -smtpserver smtp.com -usessl `
  -credential (new-object System.NetworkCredential("$Username","$Password"))
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

找不到类型 [System.NetworkCredential]...

关于通过身份验证向多个收件人发送电子邮件的最佳方式是什么?

Kev*_*Kev 5

确保$EmailTo用逗号分隔地址列表,不要作为数组传递。IE:

做这个:

$EmailTo = "recipient1@email.com,recipient2@email.com"
Run Code Online (Sandbox Code Playgroud)

要这样做:

$EmailTo = "recipient1@email.com","recipient2@email.com"
Run Code Online (Sandbox Code Playgroud)

或这个:

$EmailTo = "recipient1@email.com;recipient2@email.com"
Run Code Online (Sandbox Code Playgroud)

最后一个会抛出您很容易注意到的以下异常:

新对象:使用“4”个参数调用“.ctor”时出现异常:“指定的字符串不是电子邮件地址所需的格式。”