2016-06-28 19 views
1

SMTPを使用して電子メールを送信するこの簡単なスクリプトがあります。SMTPのセキュリティで保護された接続

$EmailFrom = "[email protected]" 
$EmailTo = "[email protected]" 
$Subject = "Reports" 
$Body = "Please see attachments" 
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SMTPClient($SMTPServer, 587) 
$User = "from" 
$PWord = ConvertTo-SecureString –String "Password" –AsPlainText -Force 
$Credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $User, $PWord 
Send-MailMessage -SmtpServer $SMTPServer -Credential $Credential -From $EmailFrom -To $EmailTo -Subject $Subject 

私は-UseSslを使用している問題に直面しています。それを使用して

は、

送信-はMailMessage私にエラーを与える:サーバは、セキュアな接続をサポートしていません。

それを使用していない、私にエラーを与える

は送信-はMailMessageを:SMTPサーバは、セキュアな接続が必要で、クライアントが認証されませんでした。サーバーの応答は:5.7.0最初にSTARTTLSコマンドを発行する必要があります。 PowerShellのからメールを送信する: - 4sm4306203pav.33 gsmtp

答えて

0

Net.Mail.SmtpClientSend-MailMessageは同じエンドに2通りの方法があります。ただし、サンプルコードでSmtpClientステートメントは、実際に何も実行せずにクライアントを作成するだけですが、Send-MailMessageステートメントで正しいポート(587)が指定されていないため、代わりにデフォルトポート(25)が使用されます。 から

-Port <のInt32 >
は、SMTPサーバー上の別のポートを指定します。デフォルト値は25で、デフォルトのSMTPポートです。このパラメータは、Windows PowerShell 3.0以降のリリースで使用できます。

変更

... 
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SMTPClient($SMTPServer, 587) 
$User = "from" 
$PWord = ConvertTo-SecureString –String "Password" –AsPlainText -Force 
$Credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $User, $PWord 
Send-MailMessage -SmtpServer $SMTPServer -Credential $Credential -From $EmailFrom -To $EmailTo -Subject $Subject 

... 
$SMTPServer = "smtp.gmail.com" 
$User = "from" 
$PWord = ConvertTo-SecureString –String "Password" –AsPlainText -Force 
$Credential = New-Object –TypeName "System.Management.Automation.PSCredential" –ArgumentList $User, $PWord 
Send-MailMessage -SmtpServer $SMTPServer -Port 587 -UseSsl -Credential $Credential -From $EmailFrom -To $EmailTo -Subject $Subject 

にし、あなたのコードが動作するはずです。

関連する問題