PowerShellスクリプトから電子メールを送信しようとしていますが、SMTPサーバーで正しく認証されていないようです。SmtpClientがPowerShellスクリプトで認証されないのはなぜですか?
$fromEmail = '[email protected]';
$toEmail = '[email protected]';
$mailUser = 'myUsername';
$mailPassword = 'myPassword';
$smtpServer = 'smtp.example.com';
$smtpPort = 587;
$content = 'Email message content';
$subject = 'Email message subject';
$credentials = New-Object System.Net.NetworkCredential $mailUser, $mailPassword;
$server = New-Object System.Net.Mail.SmtpClient $smtpServer, $smtpPort;
$server.UseDefaultCredentials = $false;
$server.EnableSSL = $true;
$server.Credentials = $credentials
$server.Send($fromEmail, $toEmail, $subject, $content);
上記をpowershellプロンプトで実行しようとすると、リレーアクセスが拒否されたというエラーが発生します。私はThunderbirdやPHPのではSwiftMailerと同じサーバーとクレデンシャルの設定を使用して電子メールを送信してください場合
Exception calling "Send" with "4" argument(s): "Client does not have permission to submit mail to this server. The
server response was: 4.7.1 <[email protected]>: Relay access denied"
At line:1 char:1
+ $server.Send($fromEmail, $toEmail, $subject, $content);
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SmtpException
は、それが正常に動作します。後置ログを見ると、SmtpClientは認証しようとしていないのではなく、匿名でメールを送信しようとしているように見えます。
これは、サンダーバードで作られた優れたログエントリは次のようになります。私もGmailアドレスを経由して送信しようとしたテストとして
Jun 14 22:11:16 services postfix/submission/smtpd[16824]: connect from unknown[xxxx]
Jun 14 22:11:16 services postfix/submission/smtpd[16824]: NOQUEUE: reject: RCPT from unknown[xxxx]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<WTFv2>
:SmtpClientによって作られたエントリがどのように見えるのに対し
Jun 14 21:17:42 services postfix/submission/smtpd[16653]: connect from unknown[xxxx]
Jun 14 21:17:43 services postfix/submission/smtpd[16653]: 59074F96E: client=unknown[xxxx], sasl_method=PLAIN, [email protected]
私のGmail資格情報を使用し、それも認証なしで失敗しました。
Exception calling "Send" with "4" argument(s): "The SMTP server requires a secure connection or the client was not
authenticated. The server response was: 5.5.1 Authentication Required. Learn more at"
At line:1 char:1
+ $server.Send($fromEmail, $toEmail, $subject, $content);
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SmtpException
私はここで何が欠けていますか? .net SmtpClientがメールを通過させるために認証を送信しないのはなぜですか?
[電子メールを送信するためのSend-MailMessageコマンドに資格情報を渡す方法](https://stackoverflow.com/questions/12460950/how-to-pass-credentials-to-the-send-mailmessage-メールを送信するためのコマンド) - 特にSSLを使う必要があるかもしれません。あるいは、新オブジェクトのパラメータを '$ credential = New-Object System.Net.NetworkCredential($ mailUser、$ mailPassword) ' – TessellatingHeckler
私はSSLを有効にしています。かっこを追加しても差はありません。 – kicken