2017-11-06 19 views
0

次のエラーが表示されます。認証資格が無効です。SMTPを使用するPHPMailerを使用したAWS SES:SMTPエラー:認証できませんでしたか?

ユーザー名(アクセスキーID)とパスワード(シークレットトークン)を何百回もチェックしました。私は、サーバーに送られたbase64をダブルチェックして、それが正しいです。ユーザーには正しいアクセス権があります。 EC2サーバーからのすべてのアウトバウンドトラフィックが許可されます。 SELinuxは無効です。私は特殊文字をエスケープし、別の資格情報を試しました。より多くのアクセス権を持つユーザーを使用しようとしました。

私はAWS SESでPHPMailerを使用しています。ここで

はコードです:ここでは

$mail = new PHPMailer; 
$mail->isSMTP(); 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = 'tls'; 
$mail->SMTPDebug = 4; 
$mail->setFrom('[email protected]', 'Sender Name'); 
$mail->addAddress('[email protected]', 'Recipient Name'); 
$mail->Username = 'AKIAINH6PZ2UQKDK2BTA'; 
$mail->Password = 'GvMMa7R3fAXZGacl3gyfA86J0RxJLO7FQte9vrof'; 
$mail->Host = 'email-smtp.us-east-1.amazonaws.com'; 
$mail->Subject = 'Amazon SES test (SMTP interface accessed using PHP)'; 
$mail->Body = '<h1>Email Test</h1>'; 
$mail->Port = 587; 
$mail->isHTML(true); 
$mail->AltBody = "Email Test\r\nThis email was sent through the 
    Amazon SES SMTP interface using the PHPMailer class."; 

if(!$mail->send()) { 
    echo "Email not sent. " , $mail->ErrorInfo , PHP_EOL; 
} else { 
    echo "Email sent!" , PHP_EOL; 
} 

は完全な出力です:

2017-11-06 01:09:49 Connection: opening to email-smtp.us-east-1.amazonaws.com:587, timeout=300, options=array() 
2017-11-06 01:09:49 Connection: opened 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "220 email-smtp.amazonaws.com ESMTP SimpleEmailService-2367521455 ZxpFMwcwQB6LGlJ2noyc" 
2017-11-06 01:09:49 SERVER -> CLIENT: 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-2367521455 ZxpFMwcwQB6LGlJ2noyc 
2017-11-06 01:09:49 CLIENT -> SERVER: EHLO 34.200.216.237 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-email-smtp.amazonaws.com" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-8BITMIME" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-SIZE 10485760" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-STARTTLS" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-AUTH PLAIN LOGIN" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250 Ok" 
2017-11-06 01:09:49 SERVER -> CLIENT: 250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN250 Ok 
2017-11-06 01:09:49 CLIENT -> SERVER: STARTTLS 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "220 Ready to start TLS" 
2017-11-06 01:09:49 SERVER -> CLIENT: 220 Ready to start TLS 
2017-11-06 01:09:49 CLIENT -> SERVER: EHLO 34.200.216.237 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-email-smtp.amazonaws.com" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-8BITMIME" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-SIZE 10485760" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-STARTTLS" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250-AUTH PLAIN LOGIN" 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "250 Ok" 
2017-11-06 01:09:49 SERVER -> CLIENT: 250-email-smtp.amazonaws.com250-8BITMIME250-SIZE 10485760250-STARTTLS250-AUTH PLAIN LOGIN250 Ok 
2017-11-06 01:09:49 Auth method requested: UNKNOWN 
2017-11-06 01:09:49 Auth methods available on the server: PLAIN,LOGIN 
2017-11-06 01:09:49 Auth method selected: LOGIN 
2017-11-06 01:09:49 CLIENT -> SERVER: AUTH LOGIN 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "334 VXNlcm5hbWU6" 
2017-11-06 01:09:49 SERVER -> CLIENT: 334 VXNlcm5hbWU6 
2017-11-06 01:09:49 CLIENT -> SERVER: QUtJQUlOSDZQWjJVUUtESzJCVEE= 
2017-11-06 01:09:49 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:49 SMTP -> get_lines(): $str is "334 UGFzc3dvcmQ6" 
2017-11-06 01:09:49 SERVER -> CLIENT: 334 UGFzc3dvcmQ6 
2017-11-06 01:09:49 CLIENT -> SERVER: R3ZNTWE3UjNmQVhaR2FjbDNneWZBODZKMFJ4SkxPN0ZRdGU5dnJvZg== 
2017-11-06 01:09:50 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:50 SMTP -> get_lines(): $str is "535 Authentication Credentials Invalid" 
2017-11-06 01:09:50 SERVER -> CLIENT: 535 Authentication Credentials Invalid 
2017-11-06 01:09:50 SMTP ERROR: Password command failed: 535 Authentication Credentials Invalid 
SMTP Error: Could not authenticate. 
2017-11-06 01:09:50 CLIENT -> SERVER: QUIT 
2017-11-06 01:09:50 SMTP -> get_lines(): $data is "" 
2017-11-06 01:09:50 SMTP -> get_lines(): $str is "221 Bye" 
2017-11-06 01:09:50 SERVER -> CLIENT: 221 Bye 
2017-11-06 01:09:50 Connection: closed 
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting 
Email not sent. SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting 
+0

でこの関数を呼び出すことができます – Synchro

答えて

1

SESは、電子メールを送信するIAMユーザーアクセスキーを使用してサポートしていません。これを試すことができます。 SESはAmazon SES SMTP認証情報を使用します。

Sign in to the AWS Management Console and open the Amazon SES console at https://console.aws.amazon.com/ses/. 

In the navigation pane, choose SMTP Settings. 

In the content pane, choose Create My SMTP Credentials. 

In the Create User for SMTP dialog box, you will see that an SMTP user name has been filled in for you. You can accept this suggested user name or enter a different one. To proceed, choose Create. 

Choose Show User SMTP Credentials. Your SMTP credentials will be displayed on the screen; copy them and store them in a safe place. You can also choose Download Credentials to download a file that contains your credentials. 

ここには、さまざまな種類の資格情報とそれらをSESでどのように使用するかを説明するドキュメントへのリンクがあります。ここで

Using Credentials With Amazon SES

資格情報を取得へのリンクです:

Obtaining Your Amazon SES SMTP Credentials

+0

これはうまくいきましたが、私は非常に混乱しています。私がこのプロセスを辿ると、IAMユーザーが作成されます。そのユーザーの「アクセスキー」の下にキーが表示されることもあります。そこに別の鍵を作成しようとしましたが、うまくいきませんでした。 –

+0

Amazon SES SMTP認証情報は、実際にはIAM認証情報の一種です。ただし、IAMユーザー資格情報とは別に作成および管理されます。 –

1

は、これらのあなたのAWSの資格情報またはSMTP資格はありますか? これらがAWS資格情報の場合は、SMTP資格情報を生成してから試してください。 See it here

それとも、あまりにも Similar issue

0

この例の機能は、Windows 2012にインストールPHP 7.1でアマゾンSESで動作します、あなたは5.2(またはそうphpmailerの解凍したと仮定すると)私が行ったのと同じ場所に。私は作曲家を気にしなかった。以下の関数では、私はこの行をコメントアウトしています。 $ mail-> SMTPDebug = 2; ...しかし、テスト中にこの行のコメントを外して、何が起こったかを見ることができます。追加する必要がある値は角カッコ内にあります。私のSESホストは "email-smtp.us-east-1.amazonaws.com"です。ただホストfqdn以上のものを置かないことをあなたが使用しているかどうかを確認してください。 TLS:// ....

保存Send_Amazon_Mail.php

<?php 
function Send_Mail($to,$subject,$body) 
{ 
require 'C:\Program Files\PHP\v7.1\phpmailer\PHPMailerAutoload.php'; 
$from = "[SES validated email address here]"; 
$mail = new PHPMailer(); 
// $mail->SMTPDebug = 2; 
$mail->IsSMTP(true); // SMTP 
$mail->SMTPAuth = true; // SMTP authentication 
$mail->SMTPSecure = 'ssl'; 
$mail->Mailer = "smtp"; 
$mail->Host= "[your SES host]"; 
$mail->Port = 465; // SMTP Port 
$mail->Username = "[SES SMTP USERNAME]"; // SMTP Username 
$mail->Password = "[SES SMTP PASSWORD]"; // SMTP Password 
$mail->SetFrom($from, 'Test Do Not Reply'); 
$mail->AddReplyTo($from,'[SES validated email address here]'); 
$mail->Subject = $subject; 
$mail->MsgHTML($body); 
$address = $to; 
$mail->AddAddress($address, $to); 

if(!$mail->Send()) 
return false; 
else 
return true; 

} 
?> 

として、次のあなたは、 `SMTPDebug = 4`を使用しないでくださいテストプログラム

<?php 
require 'Send_Amazon_Mail.php'; 
$to = "[someemailaddresshere]"; 
$subject = "Test Mail Subject"; 
$body = "Hi<br/>Test Mail<br/>Amazon SES"; // HTML tags 
Send_Mail($to,$subject,$body); 
?> 
関連する問題