it-swarm.com.de

PHPMailer - SMTP ERROR: Kennwortbefehl fehlgeschlagen, wenn E-Mails von meinem Server gesendet werden

Ich habe phpmailer () -Konzept verwendet, um E-Mails mit PHP-Skript an Benutzer von meinem freigegebenen Server zu senden. Ich kann jedoch nicht senden, obwohl in meinem Skript gemäß PHP-Code alles richtig ist.

Mein Code wie folgt:  

  $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;

}

Hinweis: Ich habe "GMail" als SMTP-Server verwendet und SMTPSecure ist "ssl" und der Port ist "465". Benutzername und Kennwort sind mein GMail-Benutzername und -Kennwort

Ich habe einen VPS Shared Server verwendet und mein PHP-Skript auf diesem Server gespeichert.

Ich denke, es gibt kein Problem in meinem PHP-Skript und ich weiß nicht, warum es nicht funktioniert.

Ich habe den Fehler so.

  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.

Bitte geben Sie eine Lösung dafür.
Danke im Voraus.

Nicht vergessen: Ich benutze den Shared Server-Namen 'VPS.mydomain.com' und möchte GMail als SMTP-Server verwenden, um E-Mails an Benutzer zu senden.

45

Ein bisschen spät, aber vielleicht wird es jemand nützlich finden.

Links, die das Problem beheben (Sie müssen bei Google-Konto angemeldet sein):

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

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

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

Einige Erklärungen, was passiert:

Dieses Problem kann durch "weniger sichere" Anwendungen verursacht werden, die versuchen, das E-Mail-Konto zu verwenden (dies ist laut Google-Hilfe nicht sicher, wie sie beurteilen, was sicher ist und was nicht) OR, wenn Sie sich anmelden möchten mehrmals hintereinander OR, wenn Sie das Land wechseln (verwenden Sie beispielsweise VPN, verschieben Sie den Code auf einen anderen Server oder versuchen Sie tatsächlich, sich aus einem anderen Teil der Welt anzumelden).

Zur Lösung musste ich: (erstes Mal)

  • loggen Sie sich über das Web in mein Konto ein
  • letzte Versuche, das Konto zu verwenden, und verdächtigen Zugriff akzeptieren: DIESER LINK
  • deaktivieren Sie die Funktion zum Blockieren verdächtiger Apps/Technologien: DIESER LINK

Das klappte beim ersten Mal, aber einige Stunden später, wahrscheinlich, weil ich das Problem viele Male getestet hatte und das Problem mit der obigen Methode nicht behoben werden konnte. Außerdem musste ich das Captcha löschen (das lustige Bild, das Sie auffordert, ein Wort oder einen Satz zu schreiben, wenn Sie sich heutzutage zu oft in einem Konto anmelden): 

  • nach dem Einloggen in mein Konto ging ich HIER
  • Weiter geklickt 

Hoffe das hilft. 

144
callmebob

Benutze das:

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

dieser Link ermöglicht den Zugriff auf das Google-Konto 

UPDATE 19-05-2017:

Diese URL müssen Sie von der IP-Adresse aus aufrufen, an die die E-Mail gesendet wird

21
Sanya Snex

Wie bereits vorgeschlagen, können Sie die "weniger sicheren" Anwendungen aktivieren oder einfach von ssl zu tls wechseln:

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

Wenn Sie tls verwenden, müssen Sie für weniger sichere Anwendungen keinen Zugriff gewähren. Stellen Sie nur sicher, dass IMAP aktiviert ist.

7
Sebastian Henzl

Problem gelöst - PHPMailer - SMTP-Fehler: Kennwortbefehl fehlgeschlagen, wenn Mail von meinem Server gesendet wurde

    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!
}

Wichtig: 

Gehen Sie zu Google Setting und aktivieren Sie die Option "weniger sichere" Anwendungen. Es wird funktionieren ... Es hat für mich funktioniert.

6
Ajitabh Ranjan

Ich stehe vor demselben Problem und denke, dass ich weiß, warum dies passiert. 

Das von mir verwendete Google Mail-Konto wird normalerweise aus Indien verwendet, und der von mir verwendete Webserver befindet sich in den Niederlanden. 

Google meldet, dass ein Anmeldeversuch von einem ungewöhnlichen Standort aus erfolgt ist, und er muss sich von diesem Standort aus über einen Webbrowser anmelden.

Außerdem musste ich verdächtigen Zugriff auf das Google Mail-Konto über https://security.google.com/settings/security/activity akzeptieren.

Aber am Ende ist mein Problem noch nicht gelöst, weil ich mich von einem Standort in den Niederlanden aus bei gmail anmelden muss.

Ich hoffe das hilft dir ein bisschen! (Leider habe ich keine E-Mail-Antworten zu dieser E-Mail-Adresse gelesen.)

2
privacy

Wenn Sie G Suit-Benutzer sind, kann dies vom Administrator gelöst werden

  1. Gehen Sie zu Ihrem Admin-Panel
  2. Geben Sie in die obere Suchleiste « Security » ein (Select Security with Shield icon)
  3. Öffnen Sie Grundeinstellungen
  4. Gehe zu Weniger sichere Apps Abschnitt
  5. Drücken Sie: Gehen Sie zu den Einstellungen für weniger sichere Apps ›› 

Wählen Sie nun eines der Optionsfelder .__ aus. A) Deaktivieren Sie den Zugriff auf weniger sichere Apps für alle Benutzer (empfohlen) B) Erlauben Sie Benutzern, ihren Zugriff auf weniger sichere Apps zu verwalten C) Erzwingen Sie den Zugriff auf weniger sichere Apps für alle Benutzer (nicht empfohlen)

Normalerweise funktioniert es wegen a) nicht! Und wird sofort mit der Option c) arbeiten. b) - Diese Option erfordert mehr Konfiguration für jeden Benutzer in GSuit

Ich hoffe es hilft

1
Vladimir

Dieser Fehler ist auf weitere Sicherheitsfunktionen von Google Mail zurückzuführen.

Sobald dieser Fehler generiert wurde ... Bitte melden Sie sich in Ihrem Google Mail-Konto an. Dort finden Sie die Sicherheitswarnung von GOOGLE. Folgen Sie der E-Mail.

0
Bhanu

Ihre E-Mails werden nur dann online gesendet, wenn Sie die Bestätigung in zwei Schritten für Ihr G-Mail-Konto abgeschlossen haben und dieses Kennwort verwenden.

0
user10800773

Wenn Sie es immer noch nicht ausführen können, versuchen Sie Folgendes zusätzlich zu der von @CallMeBob bereitgestellten Methode.

PHP.ini

  1. Gehe zu C:\xampp\php , editiere php.ini datei mit notepad.
  2. Drücken Sie STRG + F auf Ihrer Tastatur, geben Siesendmail_pathin die Suchleiste ein und klicken Sie zweimal auf Find Next .
  3. Sie sollten sich jetzt im Abschnitt [Mail-Funktion] befinden. 

Entfernen Sie das Semikolon für diese Zeile: sendmail_path = "\" C:\xampp\sendmail\sendmail.exe\"-t"
Fügen Sie für diese Zeile ein Semikolon hinzu: sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

SendMail.ini

  • Gehe zu C:\xampp\sendmail , editiere sendmail.ini datei mit notepad
  • Ändern Sie Folgendes:


Hinweis:
** smtp_port muss mit denen übereinstimmen, die in Ihrem PHP-Code angegeben sind.
** Vergessen Sie nicht, your-gmail-username und your-gmail-password in das von Ihnen verwendete Konto zu ändern. 
**


Hoffe das hilft! :)

0
Rafilson