복붙노트

PHPMailer - SMTP 오류 : 서버에서 메일을 보낼 때 비밀번호 명령이 실패했습니다.

PHP

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 = "moorthi.mrk10@gmail.com"; // My gmail username
  $mail->Password = "************"; // My Gmail Password
  $mail->SetFrom("moorthi.mrk10@gmail.com");
  $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;

}

참고 : "Gmail"을 SMTP 서버로 사용했으며 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'을 사용하고 사용자에게 메일을 보내기 위해 Gmail을 Gmail 서버로 사용하고 싶습니다.

해결법

  1. ==============================

    1.조금 늦었지 만 누군가 유용 할 것입니다.

    조금 늦었지 만 누군가 유용 할 것입니다.

    문제를 해결하는 링크 (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 도움말에 따라 다르며 보안 수준과 보안 수준을 판단하는 방법이 확실하지 않음) 또는 여러 번 로그인하려고하는 경우 발생할 수 있습니다. 또는 국가를 변경 한 경우 (예 : VPN 사용, 다른 서버로 코드 이동 또는 실제로 다른 지역에서 로그인 시도).

    내가 해결해야 할 점은 : (처음)

    이것은 처음에는 효과가 있었지만 몇 시간 후, 아마도 많은 테스트를했기 때문에 문제가 다시 나타나고 위의 방법을 사용하여 고칠 수 없었습니다. 또한 captcha (요즘 너무 많은 시간에 계정에 로그인 할 때 단어 나 문장을 다시 쓰도록하는 재미있는 그림)을 지워야했습니다.

    희망이 도움이됩니다.

  2. ==============================

    2.이것을 사용하십시오 :

    이것을 사용하십시오 :

    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 :

    이 url은 이메일을 보낼 IP 주소에서 방문해야합니다

  3. ==============================

    3.문제 해결 - PHPMailer - SMTP 오류 : 서버에서 메일을 보낼 때 비밀번호 명령이 실패했습니다.

    문제 해결 - 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   = "xxxxx@gmail.com";  // GMAIL username
          $mail->Password   = "********";            // GMAIL password
          $mail->AddAddress('sendto@gmail.com', 'abc');
          $mail->SetFrom('xxxxxx@gmail.com', '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 설정으로 이동하여 '보안 수준이 낮은'응용 프로그램을 활성화하십시오. 효과가있을 것입니다. 그것은 나를 위해 일했습니다.

  4. ==============================

    4.다른 사람들이 이미 제안했듯이 "안전성이 떨어지는"응용 프로그램을 활성화하거나 단순히 ssl에서 tls로 전환 할 수 있습니다.

    다른 사람들이 이미 제안했듯이 "안전성이 떨어지는"응용 프로그램을 활성화하거나 단순히 ssl에서 tls로 전환 할 수 있습니다.

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

    tls를 사용할 때 덜 안전한 응용 프로그램에 대한 액세스 권한을 부여 할 필요가 없으며 IMAP이 활성화되어 있는지 확인하십시오.

  5. ==============================

    5.나는 똑같은 문제에 직면 해 있으며 이것이 왜 일어나는지를 알고 있다고 생각한다.

    나는 똑같은 문제에 직면 해 있으며 이것이 왜 일어나는지를 알고 있다고 생각한다.

    내가 사용하는 Gmail 계정은 일반적으로 인도에서 사용되며, 내가 사용하는 웹 서버는 네덜란드에 있습니다.

    Google은 비정상적인 위치에서 로그인 시도가 있었음을 알리고 웹 브라우저를 통해 해당 위치에서 로그인해야합니다.

    또한 https://security.google.com/settings/security/activity를 통해 Gmail 계정에 대한 의심스러운 액세스를 허용해야했습니다.

    그러나 결국 네덜란드에서 한 위치에서 Gmail에 로그인해야하므로 내 문제는 아직 해결되지 않았습니다.

    이게 당신을 조금 도와 주길 바래요! (죄송합니다.이 이메일 주소에 대한 이메일 답장을 읽지 않습니다.)

  6. ==============================

    6.G Suit 사용자 인 경우 관리자가 해결할 수 있습니다.

    G Suit 사용자 인 경우 관리자가 해결할 수 있습니다.

    이제 라디오 버튼 중 하나를 선택하십시오. a) 모든 사용자에 대해 보안 수준이 낮은 앱에 대한 액세스를 사용 중지합니다 (권장). b) 사용자가 덜 안전한 앱에 대한 액세스를 관리하도록 허용합니다. c) 모든 사용자에 대해 보안 수준이 낮은 앱에 대한 액세스 허용 (권장하지 않음)

    보통 때문에) 작동하지 않습니다! 그리고 c) 옵션으로 즉시 작업을 시작합니다. b) - 옵션은 GSuit의 각 사용자에 대해 더 많은 구성을 필요로합니다.

    희망이 도움이된다.

  7. ==============================

    7.이 오류는 Gmail의 더 많은 보안 기능으로 인한 것입니다.

    이 오류는 Gmail의 더 많은 보안 기능으로 인한 것입니다.

    이 오류가 생성되면 ... Gmail 계정에 로그인하십시오 .. GOOGLE의 보안 경고를 찾을 수 있습니다. 메일을 따르십시오 ... 덜 안전한 옵션을 클릭하십시오. 다시 phpmailer를 시도하십시오.

  8. ==============================

    8.여전히 작동시키지 못하는 사람들을 위해 @CallMeBob에서 제공하는 방법 외에도 다음을 시도하십시오.

    여전히 작동시키지 못하는 사람들을 위해 @CallMeBob에서 제공하는 방법 외에도 다음을 시도하십시오.

    이 행의 세미콜론을 제거하십시오. sendmail_path = "\"C : \ xampp \ sendmail \ sendmail.exe \ "-t" 이 줄에 세미콜론을 추가하십시오. sendmail_path = "C : \ xampp \ mailtodisk \ mailtodisk.exe"

    노트 : ** smtp_port는 PHP 코드로 작성된 것과 일치해야합니다. ** your-gmail-username 및 your-gmail-password는 사용중인 계정으로 변경하십시오. **

    희망이 도움이! :)

  9. from https://stackoverflow.com/questions/21937586/phpmailer-smtp-error-password-command-failed-when-send-mail-from-my-server by cc-by-sa and MIT license