Obtenez le message d'erreur complet de PHPMailer Exception
Je suis en utilisant la Classe PHPMailer pour envoyer les mails smtp, mais j'ai besoin de journal de suivi de PHPmailerException dans la table mysql,
Code :
$mail = new PHPMailer(true);
try {
$mail->Host =$dmmodel->host;
$mail->Username= $dmmodel->username;
$mail->Password= $dmmodel->password;
$mail->Mailer='smtp';
$mail->Port=$dmmodel->port;
$mail->SMTPAuth = true;
$mail->SMTPSecure = ($dmmodel->smtp_enableSSL==1?'ssl':($dmmodel->smtp_enableSSL==2 ? 'tls':''));
$mail->SMTPDebug = 2;
$mail->From = $dmmodel->email_from;
$mail->FromName = $dmmodel->name_from;
$mail->Subject = $this->getContentBody($docmodel->content_subject,$docmodel->crm_base_contact_id,$_POST["taskid"],$postcode,$recall_by,$recall_dt,true);
$mail->AddAddress($email[$i]);
$mail->IsHTML(true);
}
catch (phpmailerException $e)
{
$msg = "Email Delivery failed -" . $e->errorMessage();
echo "Email not sent";
}
Où $variable msg a seul le message "SMTP Erreur: n'a pas Pu authentifier"
mais quand je l'ai mis en garde , je reçois plein de message(ci-dessous) la raison de ce problème,
SMTP -> à PARTIR du SERVEUR:220 smtp.gmail.com ESMTP n3sm27565307paf.13 - gsmtp
SMTP -> à PARTIR du SERVEUR: 250-smtp.gmail.com à votre service, [122.164.189.101]
250-TAILLE 35882577
250-8BITMIME
250-AUTH LOGIN PLAINE XOAUTH2 PLAINE-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
SMTP -> ERREUR: le Mot de passe n'est pas acceptée à partir du serveur: 535-5.7.8 nom d'utilisateur et le Mot de passe n'est pas acceptée. Pour en savoir plus
535 5.7.8 https://support.google.com/mail/?p=BadCredentials n3sm27565307paf.13 - gsmtp
SMTP -> à PARTIR du SERVEUR:250 2.1.5 Vidé n3sm27565307paf.13 - gsmtp
E-mail non envoyé
comment puis-je stocker le message ci-dessus dans une variable ? Svp quelqu'un peut m'aider à obtenir ce message
- vérifier stackoverflow.com/questions/27122711/... et github.com/PHPMailer/PHPMailer/blob/master/docs/...
- J'ai juste mis à jour les notes de rendre cela plus clair, - la façon de le faire est d'injecter votre propre Debugoutput de gestionnaire et de capturer tous les messages.
Vous devez vous connecter pour publier un commentaire.
Après la mise
$mail->SMTPDebug = 2;
, vous devez créer une fonction de rappel et de l'attribuer à$mail->Debugoutput
. Dans cette fonction, vous pouvez assigner la sortie de débogage pour une variable. Voici de la documentation sur ce sujet: http://phpmailer.github.io/PHPMailer/classes/PHPMailer.PHPMailer.PHPMailer.html#property_DebugoutputVeuillez noter: Votre fonction de rappel est appelée une seule fois par ligne de sortie de débogage (en opposition à la fois avec tous de la sortie de débogage dans la chaîne d'erreur), de sorte que vous aurez à ajouter à chaque ligne de votre variable. Si vous venez de vous affecter, vous n'obtiendrez que la dernière ligne de sortie de débogage, ce qui est souvent la même information qui est dans $mail->ErrorInfo ou l'exception.
Je préfère faire quelque chose comme ceci:
Cela devrait afficher les mêmes informations que dans votre exemple.
Pouvez-vous essayer:
celui-ci:
$mail->SMTPDEbug = 4;
au lieu de
$mail->SMTPDebug = 2;
Aussi, vous pouvez obtenir plus d'informations sur l'erreur avec la méthode
$mail->ErrorInfo
.Par exemple:
C'est une alternative à l'exception du modèle que vous avez besoin à l'actif avec new PHPMailer(true).