首页 > 解决方案 > 发送 SMTP 电子邮件的 Powershell 脚本失败

问题描述

我正在尝试使用 .net 通过 powershell 发送和发送电子邮件。

我收到以下错误:

Exception calling "Send" with "4" argument(s): "Failure sending mail."
At line:1 char:1
+ $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SmtpException

使用以下脚本:

$EmailFrom = "myemail@gmail.com"
$EmailTo = "anotheremail@gmail.com"
$Subject = "test" 
$Body = @"
test
"@
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("myemail@gmail.com", "mypassword"); 
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

什么可能导致此异常?谢谢!

标签: smtpclient

解决方案


这有效:

$EmailTo = "myself@gmail.com"
$EmailFrom = "me@mydomain.com"
$Subject = "Test" 
$Body = "Test Body" 
$SMTPServer = "smtp.gmail.com" 
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
$SMTPMessage.Attachments.Add($attachment)
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password"); 
$SMTPClient.Send($SMTPMessage)

推荐阅读