Web サイトを構築していて、その一部にメールを送信する必要があります (1 つはアカウント パスワード リセット リンク用、もう 1 つは一般的なユーザー管理者連絡用)。私は PearMailer を使用して GMail アカウント経由でメールを送信してきましたが、これまでは問題なく機能していました。何らかの理由で、メールの送信が停止し、次の非常に役に立たないエラーが表示されます。
[message] => Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: fsockopen(): unable to connect to ssl://smtp.gmail.com:465 (Unknown error) (code: -1, response: )
openSSL が有効になっており、使用しているすべての資格情報が正しい (それらを使用してその GMail アカウントに手動でサインインできます)。
これは私が使用しているコードです。$config にはアカウントの資格情報が保持され、$_POST データはお問い合わせフォームからのものです (開発中にサニタイズが行われていないことは無視してください)。
require_once "Mail.php";
$params=array(
"host"=>"ssl://smtp.gmail.com",
"port"=>465,
"auth"=>true,
"username"=>$config["mailFrom"],
"password"=>$config["mailPass"]
);
$headers=array(
"To"=>$config["mailFrom"],
"From"=>$_POST['user']." <".$_POST["reply-to"].">",
"Content-type"=>"text/html",
"Subject"=>$_POST['subject']
);
$mail=Mail::factory("smtp", $params);
$sent=$mail->send($config["mailFrom"], $headers, htmlentities($_POST['body']));
自分の GMail アカウントにメールを送信する必要がありますが、代わりに上記のエラーが表示されます。宛先アドレスと宛先アドレスを変更した後、何があっても、そのエラーが発生します。これは特に奇妙です。なぜなら、パスワード リセット リンクを送信するために私が使用していたものとほとんど同じコードが使用されていたからです。もちろん、それも現在接続に失敗しています。
Google が設定を変更したことを示すものは何も見つかりませんし、smtp.gmail.com が許可するはずの 1 日あたり 2,000 メッセージの制限を絶対に超えていません。