web-dev-qa-db-ja.com

PHPMailer-SMTPエラー:サーバーからメールを送信するときにパスワードコマンドが失敗しました

私はphpmailer()コンセプトを使用して、phpスクリプトを使用して共有サーバーからユーザーにメールを送信しましたが、phpmailerコードに従ってスクリプト内のすべてが正しくても送信できません。

このような私のコード:

  $message = " This is testing message from my server";

  $mail = new PHPMailer(); // create a new object
  $mail->IsSMTP(); // enable SMTP
  $mail->Host = "smtp.gmail.com";
  $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
  $mail->SMTPAuth = true; // authentication enabled
  $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
  $mail->Port = 465; // or 587
  $mail->IsHTML(true);
  $mail->Username = "[email protected]"; // My gmail username
  $mail->Password = "************"; // My Gmail Password
  $mail->SetFrom("[email protected]");
  $mail->Subject = "Test Mail from my Server";
  $mail->Body = $message;
  $mail->AddAddress($email);
   if($mail->Send())
      {
    print json_encode("SUCCESS");
}
else
{
    echo "Mailer Error: " . $mail->ErrorInfo;

}

注: SMTPサーバーとして「GMail」を使用し、SMTPSecureは「ssl」、ポートは「465」、ユーザー名とパスワードはGMailのユーザー名とパスワードです

VPS共有サーバーを使用し、そのサーバーにphpスクリプトを保持しました。

私は私のPHPスクリプトに問題はないと思うし、なぜそれが機能しないのか分かりません。

このようなエラーが発生しました。

  2014-02-21 12:30:11   CLIENT -> SERVER: EHLO jkcorporates.com
  2014-02-21 12:30:11   CLIENT -> SERVER: AUTH LOGIN
  2014-02-21 12:30:11   CLIENT -> SERVER: bW9vcnRoaS5tcmsxMEBnbWFpbC5jb20=
  2014-02-21 12:30:11   CLIENT -> SERVER: OTk0MTI0MTE0MA==
  2014-02-21 12:30:11   SMTP ERROR: Password command failed: 534-5.7.14 
  534-5.7.14 i-_eumA> Please log in via your web browser and then try again.
  534 5.7.14 54 k76sm17979938yho.18 - gsmtp
  2014-02-21 12:30:11   CLIENT -> SERVER: QUIT
  " The ERROR is  "  SMTP connect() failed.

そのための解決策をいくつか教えてください。
前もって感謝します。

覚えておいてください共有サーバー名 'VPS.mydomain.com'を使用し、ユーザーにメールを送信するためにSMTPサーバーとしてGMailを使用したいです。

51

少し遅れますが、おそらく誰かがそれを役に立つと思うでしょう。

問題を解決するリンク(Googleアカウントにログインする必要があります):

https://security.google.com/settings/security/activity?hl=en&pli=1

https://www.google.com/settings/u/1/security/lesssecureapps

https://accounts.google.com/b/0/DisplayUnlockCaptcha

何が起こるかの説明:

この問題は、「安全性の低い」アプリケーションがメールアカウントを使用しようとしていることが原因である可能性があります(これは、Googleヘルプによると、安全なものとそうでないものの判断方法が不明です)OR国を変更する場合(たとえば、VPNを使用する、コードを別のサーバーに移動する、または実際に世界のさまざまな部分からログインしようとする場合)に連続して数回ログインするOR。

解決するために:(初めて)

  • ウェブ経由でアカウントにログイン
  • アカウントを使用して不審なアクセスを受け入れる最近の試みを表示します: THIS LINK
  • 不審なアプリ/テクノロジーをブロックする機能を無効にします: THIS LINK

これは最初に機能しましたが、数時間後、おそらく問題を再現するために多くのテストを行っていたため、上記の方法では修正できませんでした。さらに、私はキャプチャをクリアしなければなりませんでした(最近、アカウントにログインするときにWordまたは文を書き直すように要求する面白い画像):

  • アカウントにログインした後、私は行きました HERE
  • 続行をクリックしました

お役に立てれば。

163
callmebob

これを使って:

https://www.google.com/settings/u/1/security/lesssecureapps
https://accounts.google.com/b/0/DisplayUnlockCaptcha
https://security.google.com/settings/security/activity?hl=en&pli=1

このリンクは、Googleアカウントへのアクセスを許可します

更新日19-05-2017:

メールを送信するIPアドレスからアクセスする必要があるこれらのURL

22
Sanya Snex

他の人がすでに提案したように、「安全性の低い」アプリケーションを有効にするか、単にsslからtlsに切り替えることができます。

$mailer->Host = 'tls://smtp.gmail.com';
$mailer->SMTPAuth = true;
$mailer->Username = "[email protected]";
$mailer->Password = "***";
$mailer->SMTPSecure = 'tls';
$mailer->Port = 587;

tlsを使用する場合、安全性の低いアプリケーションにアクセスを許可する必要はありません。IMAPが有効になっていることを確認してください。

7
Sebastian Henzl

問題を解決しました-PHPMailer-SMTPエラー:サーバーからメールを送信するときにパスワードコマンドが失敗しました

    require_once('class.phpmailer.php');
    include("class.smtp.php"); 
    $nameField = $_POST['name'];
    $emailField = $_POST['email'];
    $messageField = $_POST['message'];
    $phoneField = $_POST['contactno'];
    $cityField = $_POST['city'];

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP

$body .= $nameField;

try {
     //$mail->Host       = "mail.gmail.com"; // SMTP server
      $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
      $mail->SMTPAuth   = true;                  // enable SMTP authentication
      $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
      $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
      $mail->Port       = 465;   // set the SMTP port for the GMAIL server
      $mail->SMTPKeepAlive = true;
      $mail->Mailer = "smtp";
      $mail->Username   = "[email protected]";  // GMAIL username
      $mail->Password   = "********";            // GMAIL password
      $mail->AddAddress('[email protected]', 'abc');
      $mail->SetFrom('[email protected]', 'def');
      $mail->Subject = 'PHPMailer Test Subject via mail(), advanced';
      $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
      $mail->MsgHTML($body);
      $mail->Send();
      echo "Message Sent OK</p>\n";
      header("location: ../test.html");
} catch (phpmailerException $e) {
      echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
      echo $e->getMessage(); //Boring error messages from anything else!
}

重要:

Google設定にアクセスして、「安全性の低い」アプリケーションを有効にします。それが動作します。それは私のために働いた。

6
Ajitabh Ranjan

私は同じ問題に直面しており、なぜこれが起こるのか知っていると思います。

私が使用するgmailアカウントは通常インドから使用され、使用するWebサーバーはオランダにあります。

Googleは、異常な場所からログインが試行されたことを通知し、Webブラウザーを介してその場所からログインする必要があります。

さらに、 https://security.google.com/settings/security/activity を介してGmailアカウントへの疑わしいアクセスを受け入れなければなりませんでした

しかし、オランダの場所からgmailにログインする必要があるため、最終的に私の問題はまだ解決されていません。

これが少しでもお役に立てば幸いです! (申し訳ありませんが、このメールアドレスでの返信メールは読みません)

2
privacy

G Suitユーザーの場合、管理者が解決できます

  1. 管理パネルに移動します
  2. 上部の検索バーに入力します"セキュリティ"(シールド付きセキュリティの選択アイコン)
  3. 開く基本設定
  4. Goto 安全性の低いアプリセクション
  5. プレス:安全性の低いアプリの設定に移動››

ラジオボタンのいずれかを選択しますa)すべてのユーザーに対して安全性の低いアプリへのアクセスを無効にする(推奨)b)ユーザーが安全性の低いアプリへのアクセスを管理できるようにするc)すべてのユーザーに安全性の低いアプリへのアクセスを強制する(推奨されません)

通常、a)のために機能しません!そして、c)オプションですぐに動作を開始します。 b)– GSuitのユーザーごとにオプションをさらに構成する必要があります

それが役に立てば幸い

1
Vladimir

それでも機能しない場合は、@ CallMeBobが提供するメソッドに加えて、以下を試してください。

PHP.ini

  1. C:\ xampp\phpに移動し、メモ帳でphp.iniファイルを編集します。
  2. キーボードでCTRL + Fを押し、検索バーでsendmail_pathを入力し、-をクリックします次を検索 2回。
  3. 今、あなたは[mail munction]セクションにいるはずです。

この行のセミコロンを削除します。sendmail_path = "\" C:\ xampp\sendmail\sendmail.exe\"-t"
この行にセミコロンを追加します。sendmail_path = "C:\ xampp\mailtodisk\mailtodisk.exe"

SendMail.ini

  • C:\ xampp\sendmailに移動し、メモ帳でsendmail.iniファイルを編集します
  • 以下を変更します。


注:
**smtp_portは、PHPコードで記述されたものと集計する必要があります。
**your-gmail-usernameおよびyour-gmail-password使用しているアカウントに。
**


お役に立てれば! :)

1
Rafilson

このエラーは、Gmailのより多くのセキュリティ機能が原因です。

このエラーが生成されたら... Gmailアカウントにログインしてください。GOOGLEからセキュリティアラートを見つけることができます。メールをフォローしてください。

0
Bhanu

Gメールアカウントの2段階認証を完了し、そのパスワードを使用しない限り、メールはオンラインで送信されません。

0
user10800773