web-dev-qa-db-fra.com

PHPMailer - ERREUR SMTP: La commande de mot de passe a échoué lors de l'envoi de courrier électronique depuis mon serveur

J'ai utilisé le concept phpmailer () pour envoyer des messages aux utilisateurs de mon serveur partagé à l'aide d'un script php, mais je ne parviens pas à envoyer, même si tout est correct dans mon script, conformément au code phpmailer.

Mon code ressemble à ceci:  

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

}

Remarque: / J'ai utilisé "GMail" comme serveur SMTP et SMTPSecure est "ssl" et le port est "465". Le nom d'utilisateur et les mots de passe sont mes nom d'utilisateur et mot de passe GMail.

J'ai utilisé le serveur partagé VPS et j'ai gardé mon script php sur ce serveur.

Je pense qu'il n'y a pas de problème dans mon script php et je ne sais pas pourquoi cela ne fonctionne pas.

J'ai l'ERREUR comme ça.

  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.

S'il vous plaît donner une solution pour cela.
Merci d'avance.

N'oubliez pas: / J'utilise le nom de serveur partagé 'VPS.mydomain.com' et je souhaite utiliser GMail comme serveur SMTP pour envoyer des messages aux utilisateurs.

45
Punniyam Moorthi

Un peu tard, mais peut-être que quelqu'un trouvera cela utile.

Liens qui résolvent le problème (vous devez être connecté à un compte Google):

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

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

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

Quelques explications sur ce qui se passe:

Ce problème peut être causé par les applications "moins sécurisées" qui essaient d'utiliser le compte de messagerie (d'après l'aide de Google, ne sachant pas comment elles jugent ce qui est sécurisé ou non) OR si vous essayez de vous connecter plusieurs fois de suite OR si vous changez de pays (par exemple, utilisez un VPN, déplacez le code sur un serveur différent ou essayez de vous connecter depuis une autre partie du monde).

Pour résoudre je devais: (première fois)

  • se connecter à mon compte via le web
  • afficher les tentatives récentes d'utilisation du compte et accepter les accès suspects: THIS LINK
  • désactiver la fonction de blocage des applications/technologies suspectes: THIS LINK

Cela a fonctionné la première fois, mais quelques heures plus tard, probablement parce que je faisais beaucoup de tests, le problème est réapparu et n'était pas réparable avec la méthode ci-dessus. En outre, je devais vider le captcha (la photo amusante, qui vous demande de réécrire un mot ou une phrase lorsque vous vous connectez à un compte trop souvent de nos jours): 

  • après la connexion à mon compte je suis allé ICI
  • Cliqué continuer 

J'espère que cela t'aides. 

144
callmebob

Utilisez ceci:

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

ce lien permet d'accéder au compte google 

MISE À JOUR 19-05-2017:

Ces URL que vous devez visiter à partir de l'adresse IP à envoyer par e-mail

21
Sanya Snex

Comme d'autres l'ont déjà suggéré, vous pouvez activer les applications "moins sécurisées" ou simplement basculer de ssl à tls:

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

Lorsque vous utilisez tls, il n'est pas nécessaire d'accorder l'accès aux applications moins sécurisées. Assurez-vous simplement qu'IMAP est activé.

7
Sebastian Henzl

Résolution du problème - PHPMailer - ERREUR SMTP: la commande de mot de passe a échoué lors de l'envoi de courrier électronique à partir de mon serveur.

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

Important: 

Accédez à la configuration de Google et activez les applications «moins sécurisées». Cela fonctionnera . Cela a fonctionné pour moi.

6
Ajitabh Ranjan

Je suis confronté au même problème et pense savoir pourquoi cela se produit. 

Le compte gmail que j'utilise est normalement utilisé en Inde et le serveur Web que j'utilise est situé aux Pays-Bas. 

Google notifie qu'il y a eu une tentative de connexion depuis un lieu inhabituel et nécessite de se connecter depuis ce lieu via un navigateur Web.

De plus, je devais accepter un accès suspect au compte gmail via https://security.google.com/settings/security/activity

Mais au final, mon problème n’est pas encore résolu car je dois me connecter à Gmail depuis un lieu situé aux Pays-Bas.

J'espère que cela vous aidera un peu! (désolé, je ne lis pas les réponses par e-mail sur cette adresse e-mail)

2
privacy

Si vous êtes utilisateur G Suit cela peut être résolu par l'administrateur

  1. Allez dans votre panneau d'administration
  2. Tapez dans la barre de recherche supérieure « Sécurité » (icône Sélectionner la sécurité avec bouclier)
  3. Ouvrir Paramètres de base
  4. Goto Applications moins sécurisées section
  5. Presse: Accédez aux paramètres des applications moins sécurisées ›› 

Et maintenant, sélectionnez l'un des boutons radio A) Désactiver l'accès à des applications moins sécurisées pour tous les utilisateurs (Recommandé) B. Permettre aux utilisateurs de gérer leur accès à des applications moins sécurisées C) Forcer l'accès à des applications moins sécurisées pour tous les utilisateurs (non recommandé)

Habituellement, cela ne fonctionne pas à cause de a)! Et va commencer à travailler immédiatement avec l'option c). b) - l'option nécessitera plus de configuration pour chaque utilisateur dans GSuit

J'espère que ça aide

1
Vladimir

Cette erreur est due à plus de fonctionnalités de sécurité de gmail.

Une fois que cette erreur est générée ... Veuillez vous connecter à votre compte gmail ... vous y trouverez une alerte de sécurité de Google ... suivez le courrier ... vérifiez que vous cliquez sur l'option moins sécurisée ... puis réessayez phpmailer ..

0
Bhanu

Votre courrier ne sera pas envoyé en ligne à moins que vous n'ayez terminé la vérification en deux étapes de votre compte g-mail et utilisé ce mot de passe.

0
user10800773

Pour ceux qui ne peuvent toujours pas le faire fonctionner, essayez ce qui suit en plus de la méthode fournie par @CallMeBob.

PHP.ini

  1. Allez dans C:\xampp\php , éditez le fichier php.ini avec le bloc-notes.
  2. Appuyez sur CTRL + F sur votre clavier, entrezsendmail_pathdans la barre de recherche et cliquez sur - Suivant deux fois.
  3. Pour le moment, vous devriez être à la section [mail munction]

Supprimez le point-virgule de cette ligne: sendmail_path = "\" C:\xampp\sendmail\sendmail.exe\"-t"
Ajoutez un point-virgule pour cette ligne: sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"

SendMail.ini

  • Allez dans C:\xampp\sendmail , modifiez sendmail.ini fichier avec le bloc-notes
  • Modifiez les éléments suivants:


Remarque:
** smtp_port doit concorder avec ceux qui sont écrits dans votre code php.
** N'oubliez pas de changer votre-nom-utilisateur-gmail et votre-mot-de-passe-gmail pour le compte que vous utilisez. 
**


J'espère que cela t'aides! :)

0
Rafilson