1

PHPMailを使用して電子メールを送信するPHPスクリプトを設定しています。 「送信元」アドレスはAmazonのコンソールで既に確認済みで、IAMユーザーとSMTPの資格情報を作成しています。それらを作成するとき、Amazonはポート25,465,587を使用するように指示します。Here's Amazonのマニュアルのphpの例はPHPMailを使用しませんが、アイデアは同じでなければなりません。Amazon SES SMTPがポート443でのみ動作するのはなぜですか?

これは私のスクリプトです:

$mail = new PHPMailer; 

$mail->SMTPDebug = 3;        // Enable verbose debug output 
$mail->Timeout = 20; 
$mail->CharSet = 'UTF-8'; 

$mail->isSMTP();          // Set mailer to use SMTP 
$mail->Host = 'ssl://email-smtp.us-east-1.amazonaws.com'; // Specify main and backup SMTP servers 
$mail->SMTPAuth = true;        // Enable SMTP authentication 
$mail->Username = 'my_username';     // SMTP username 
$mail->Password = 'my_password';       // SMTP password 
$mail->SMTPSecure = 'tls';       // Enable TLS encryption, `ssl` also accepted 
$mail->Port = 587;         // TCP port to connect to 

$mail->setFrom('[email protected]', 'My email name'); 
$mail->addAddress('[email protected]', 'Test');  // Add a recipient 
$mail->addReplyTo('[email protected]', 'My email name'); 

$mail->isHTML(true);         // Set email format to HTML 

$mail->Subject = 'Amazon SES SMTP test with PHPMailer'; 
$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

if(!$mail->send()) { 
    echo 'Message could not be sent.'; 
    echo 'Mailer Error: ' . $mail->ErrorInfo; 
} else { 
    echo 'Message has been sent'; 
} 

ようなスクリプトが動作していないことを、私は接続タイムアウトエラーが発生します。しかし、ポートを443に変更すると、正常に動作します。何故ですか?それはAmazonによって記載されたポートではないので、今は動作していても将来的にはいくつかの問題が生じるかもしれないと心配しています。私はここに何かを逃していますかところで、ポート465はどちらも動作しません。

EDIT ただ明確化のために、私はしかし、なぜ、この、彼らが提案するポートで動作していない、これは私が言及するように、ポート443を使用して動作します実現しますか?それが私が理解しようとしていることです。このスクリプトには何かがありますか?また、ホストを "ssl://"(例ではどのように表示しているか)と、提案されているポートを使用して無修正でテストすることもできます。

+0

Hahahaha 'https:// email-smtp.us-east-1.amazonaws.com'は実際に' 220 email-smtp.amazonaws.com ESMTP SimpleEmailService'に応答します。真剣に。それは理にかなっていませんが、ポート443でTLS Wrapperを使用してSMTPを話すように見えます。しかし、あなたは正しいです - **これは間違っています**。コマンドプロンプトから、 'telnet email-smtp.us-east-1.amazonaws.com 587'。 SMTPバナーを取得していますか?そうでない場合は、おそらくNAT Gateway/Instanceのセキュリティグループに何かをブロックしようとしています。 –

答えて

0

問題は、CSFファイアウォールに設定されていたという名前のSMTP_BLOCKがオンになっていたことでした。私たちはこれをオフにして、ポート587は正常に機能します(ホストアドレスからssl://も削除しなければなりませんでした)。

これは、将来、同じ問題を抱える人に役立つかもしれません。

0

TCPポート443は、SSLを使用するWebサイトで使用される標準のTCPポートです。あなたの住所は

ssl://email-smtp.us-east-1.amazonaws.com 

ですので、これはすべきです。

+0

彼らはそのポートを使用することを提案しない理由があるでしょうか?私のスクリプトで何が見えるのですか?ポート587または465でこれが機能しないのはなぜですか?私は「ssl://」を使わずに、やってみました。 – Albert

+0

@ATechGuyこれはHTTPSではなくSMTP/MSA接続です。 –

関連する問題