PHPmailer での SMTP 接続の失敗: 問題の解決
PHPmailer 経由で電子メールを送信すると、開発者は次のエラーが発生する場合があります:「メーラー エラー: SMTP」 connect() が失敗しました。」この問題は、Gmail の SMTP サーバーを使用するときによく発生します。
解決策は、Google の新しい認証メカニズムである XOAUTH2 の実装にあります。 PHPmailer が Gmail の SMTP に接続できるようにするには、Google アカウントで「安全性の低いアプリ」設定を有効にする必要があります。この手順では、厳密な暗号化プロトコルに準拠していないアプリケーションへのアクセスが許可されます。
さらに、ポート 465 で SSL を使用する代わりに、ポート 587 で TLS に切り替えます。TLS により、リクエストは安全に暗号化され、Google の要件を満たします。 .
以下は、これらの変更を組み込んだ変更されたコード スニペットです。
require_once 'C:\xampp\htdocs\email\vendor\autoload.php';
define ('GUSER','[email protected]');
define ('GPWD','your password');
// make a separate file and include this file in that. call this function in that file.
function smtpmailer($to, $from, $from_name, $subject, $body) {
global $error;
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 2; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
$mail->SMTPAutoTLS = false;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = GUSER;
$mail->Password = GPWD;
$mail->SetFrom($from, $from_name);
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AddAddress($to);
if(!$mail->Send()) {
$error = 'Mail error: '.$mail->ErrorInfo;
return false;
} else {
$error = 'Message sent!';
return true;
}
}
これらの変更を実装すると、Gmail の SMTP サーバーへの接続を正常に確立し、PHPmailer 経由で電子メールを送信できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3