ホームページ >バックエンド開発 >PHPチュートリアル >PHPmailer で「メーラー エラー: SMTP connect() が失敗しました」を修正する方法は?

PHPmailer で「メーラー エラー: SMTP connect() が失敗しました」を修正する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 00:03:30382ブラウズ

How to Fix

PHPmailer での SMTP Connect() エラーのトラブルシューティング

はじめに

メールを送信しようとしたときPHPmailer を使用すると、「メーラー エラー: SMTP connect() が失敗しました。」というエラーが発生する場合があります。この問題は、Google による XOAUTH2 として知られる新しい認証メカニズムの実装が原因で発生します。

解決策

この問題を解決するには、次の手順に従います。

1. Google アカウントで安全性の低いアプリを有効にする

  • Google アカウントにログインし、https://www.google.com/settings/security/lesssecureapps
  • に移動します。 「安全性の低いアプリへのアクセスを有効にする」オプションが有効になっていること。

2.ポート 465 上の SSL ではなくポート 587 上の TLS を使用する

  • ポート 465 上の SSL ではなくポート 587 上の TLS を使用するようにコードを変更します。次の行を置き換えます。

    <code class="php">$mail->Host = "ssl://smtp.gmail.com";
    $mail->Port = 465;</code>

    の内容:

    <code class="php">$mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;</code>

サンプル コード

変更されたコードは次のとおりです:

<code class="php">require "class.phpmailer.php";
$mail = new PHPMailer(); 
$mail->IsSMTP();                              // send via SMTP
$mail->SMTPDebug = 2;  // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true;                       // turn on SMTP authentication
$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
$mail->SMTPAutoTLS = false;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = "[email&#160;protected]";        // SMTP username
$mail->Password = "mypassword";               // SMTP password
$webmaster_email = "[email&#160;protected]";       //Reply to this email ID
$email="[email&#160;protected]";                // Recipients email ID
$name="My Name";                              // Recipient's name
$mail->From = $webmaster_email;
$mail->FromName = "My Name";
$mail->AddAddress($email,$name);
$mail->AddReplyTo($webmaster_email,"My Name");
$mail->WordWrap = 50;                         // set word wrap
$mail->IsHTML(true);                          // send as HTML
$mail->Subject = "subject";
$mail->Body = "Hi,
This is the HTML BODY ";                      //HTML Body 
$mail->AltBody = "This is the body when user views in plain text format"; //Text Body 

if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent";
}</code>

これらの変更を実装すると、PHPmailer を使用して電子メールを正常に送信できるようになります。

以上がPHPmailer で「メーラー エラー: SMTP connect() が失敗しました」を修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。