2015-05-29 53 views
1

我试图通过Powershell发送电子邮件。使用下面的代码,我可以发送电子邮件给一个没有问题的收件人。但是,当我将第二个收件人添加到$EmailTo变量时,我没有收到电子邮件。我也没有得到任何错误。我做了一些研究,看起来SMTP客户端发送电子邮件的方式并不需要多个收件人。通过身份验证向多个收件人发送电子邮件

$EmailFrom = "[email protected]" 
$EmailTo = "[email protected]" 
$EmailBody = "Test Body" 
$EmailSubject = "Test Subject" 
$Username = "[email protected]" 
$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) 

我试图与Send-MailMessage命令,但它给我的问题。

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

我这个得到的错误是

找不到键入[System.NetworkCredential] ...

上什么是最好的方式来发送邮件给多个收件人的任何想法与身份验证会是?

回答

3

请确保您用逗号分开您的$EmailTo地址列表,并且不要以数组形式传递。即:

这样做:

$EmailTo = "[email protected],[email protected]" 

不要做到这一点:

$EmailTo = "[email protected]","[email protected]" 

或本:

$EmailTo = "[email protected];[email protected]" 

这最后1瓦特请注意以下例外情况:

New-Object:调用具有“4”参数的“.ctor”的异常:“指定的字符串不是以e -邮件地址。”

+0

这很好。谢谢! –

0

类名是System.Net.NetworkCredential,而不是System.NetworkCredential

更改此:

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

到这一点:

Send-MailMessage -From $EmailFrom -To $EmailTo -Subject $EmailSubject ` 
    -SmtpServer smtp.com -UseSsl ` 
    -Credential (New-Object Net.NetworkCredential($Username, $Password)) 

,问题应该会消失。

相关问题