PHPMailer() => Pas d'envoi de mail, pas d'erreur, pas d'info
Résolu
sipherion
Messages postés
1809
Date d'inscription
Statut
Membre
Dernière intervention
-
sipherion Messages postés 1809 Date d'inscription Statut Membre Dernière intervention -
sipherion Messages postés 1809 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je ne parviens pas à envoyer d'e-mail avec PHPMailer, pourtant je pense avoir fait tout ce qu'il faut.
Voici le fichier PHPMailer que j'utilise :
https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php
Et le fichier PHP qui appelle cette fonction :
Pour info, les ECHO c'est pour trouver d'où vient le problème car je n'ai aucun message d'erreur, ni PHP, ni SMTP, rien ! La page est blanche, même le code source est vide. A l'exécution du script, il m'affiche bien OK 0, OK 1 et OK Pret.
Merci d'avance pour votre aide :)
Je ne parviens pas à envoyer d'e-mail avec PHPMailer, pourtant je pense avoir fait tout ce qu'il faut.
Voici le fichier PHPMailer que j'utilise :
https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php
Et le fichier PHP qui appelle cette fonction :
error_reporting(E_ALL); require_once "modules/class.phpmailer.php"; echo "OK 0"; $mail_text = "Test"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "mail.MON-DOMAINE.fr"; // SMTP server example $mail->SMTPDebug = 0; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 25; // set the SMTP port for the GMAIL server $mail->Username = "forum@MON-DOMAINE.fr"; // SMTP account username example $mail->Password = "password"; // SMTP account password example echo "OK 1"; $mail->SetFrom("forum@MON-DOMAINE.fr", "Forum MON-DOMAINE"); $mail->AddReplyTo("forum@MON-DOMAINE", "Forum MON-DOMAINE"); $mail->AddAddress("sipherion_test@gmail.com"); //Adresse inexistante ^^ $mail->Subject = "Votre nouveau mot de passe sur MON-DOMAINE"; $mail->MsgHTML("$mail_text"); echo "OK Pret"; if ($mail->Send()) { echo "OK!"; $success = "<font color='green'>Un mail contenant votre nouveau mot de passe vous a été envoyé.</font>"; } else { echo $mail->ErrorInfo; } echo '<div align="center">'.$error.'</div>'; echo '<div align="center">'.$success.'</div>'; ?>
Pour info, les ECHO c'est pour trouver d'où vient le problème car je n'ai aucun message d'erreur, ni PHP, ni SMTP, rien ! La page est blanche, même le code source est vide. A l'exécution du script, il m'affiche bien OK 0, OK 1 et OK Pret.
Merci d'avance pour votre aide :)
A voir également:
- Comme ca fonction phpmailer
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
4 réponses
Je ne vois rien de bizarre dans tes variables;..
Mais ce qui m'étonne.. c'est qu'il ne t'affiche AUCUN des ECHO qui se trouve dans ton IF / ELSE ??
Tu peux, si ce n'est pas déjà fait, essayer d'inclure la class SMTP ?
Et tu peux aussi essayer de mettre un bloc TRY / CATCH pour voir..
Mais ce qui m'étonne.. c'est qu'il ne t'affiche AUCUN des ECHO qui se trouve dans ton IF / ELSE ??
Tu peux, si ce n'est pas déjà fait, essayer d'inclure la class SMTP ?
require_once('class.smtp.php');
Et tu peux aussi essayer de mettre un bloc TRY / CATCH pour voir..
error_reporting(E_ALL); require_once "modules/class.phpmailer.php"; require_once('modules/class.smtp.php'); try{ echo "<br> DEBUT DU PROGRAMME "; $mail_text = "Test"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "mail.MON-DOMAINE.fr"; // SMTP server example $mail->SMTPDebug = 1; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 25; // set the SMTP port for the GMAIL server $mail->Username = "forum@MON-DOMAINE.fr"; // SMTP account username example $mail->Password = "password"; // SMTP account password example $mail->SetFrom("forum@MON-DOMAINE.fr", "Forum MON-DOMAINE"); $mail->AddReplyTo("forum@MON-DOMAINE", "Forum MON-DOMAINE"); $mail->AddAddress("sipherion_test@gmail.com"); //Adresse inexistante ^^ $mail->Subject = "Votre nouveau mot de passe sur MON-DOMAINE"; $mail->MsgHTML("$mail_text"); echo "<br> Envoie du Mail "; if ($mail->Send()) { echo "<br> Mail envoyé ! "; $success = "<font color='green'>Un mail contenant votre nouveau mot de passe vous a été envoyé.</font>"; } else { echo "<br>Erreur lors de l'envoie du mail !! "; echo $mail->ErrorInfo; } echo '<div align="center">error :'.$error.'</div>'; echo '<div align="center">success :'.$success.'</div>'; ?> } catch (phpmailerException $e) { echo $e->errorMessage(); //error messages from PHPMailer } catch (Exception $e) { echo $e->getMessage(); }
Bonjour,
Je ne comprend pas ça :
Et pourtant tu marques ensuite :
.... si ta page est blanche .. et qu'il ne t'affiche rien... où t'affiche t'il tes "ok.." ??
Tu as essayé de modifié la variable de debug du smtp ?
- As tu également essayé avec du SSL (et en changeant de port) ?
-Es tu sûr des informations utilisées pour utiliser le SMTP de ton serveur ?
-> Ne pourrais tu pas tester avec un compte GMAIL par exemple ?
PS: Pour faire du débug.. n'hésites pas à mettre des variables plus parlantes que OK0..ok1....
Par exemple :
Je ne comprend pas ça :
La page est blanche, même le code source est vide
Et pourtant tu marques ensuite :
A l'exécution du script, il m'affiche bien OK 0, OK 1 et OK Pret.
.... si ta page est blanche .. et qu'il ne t'affiche rien... où t'affiche t'il tes "ok.." ??
Tu as essayé de modifié la variable de debug du smtp ?
$mail->SMTPDebug = 1;
- As tu également essayé avec du SSL (et en changeant de port) ?
-Es tu sûr des informations utilisées pour utiliser le SMTP de ton serveur ?
-> Ne pourrais tu pas tester avec un compte GMAIL par exemple ?
PS: Pour faire du débug.. n'hésites pas à mettre des variables plus parlantes que OK0..ok1....
Par exemple :
error_reporting(E_ALL); require_once "modules/class.phpmailer.php"; echo "<br> DEBUT DU PROGRAMME "; $mail_text = "Test"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->CharSet = 'UTF-8'; $mail->Host = "mail.MON-DOMAINE.fr"; // SMTP server example $mail->SMTPDebug = 1; // enables SMTP debug information (for testing) $mail->SMTPAuth = true; // enable SMTP authentication $mail->Port = 25; // set the SMTP port for the GMAIL server $mail->Username = "forum@MON-DOMAINE.fr"; // SMTP account username example $mail->Password = "password"; // SMTP account password example $mail->SetFrom("forum@MON-DOMAINE.fr", "Forum MON-DOMAINE"); $mail->AddReplyTo("forum@MON-DOMAINE", "Forum MON-DOMAINE"); $mail->AddAddress("sipherion_test@gmail.com"); //Adresse inexistante ^^ $mail->Subject = "Votre nouveau mot de passe sur MON-DOMAINE"; $mail->MsgHTML("$mail_text"); echo "<br> Envoie du Mail "; if ($mail->Send()) { echo "<br> Mail envoyé ! "; $success = "<font color='green'>Un mail contenant votre nouveau mot de passe vous a été envoyé.</font>"; } else { echo "<br>Erreur lors de l'envoie du mail !! "; echo $mail->ErrorInfo; } echo '<div align="center">error :'.$error.'</div>'; echo '<div align="center">success :'.$success.'</div>'; ?>
Merci pour ta réponse.
- J'ai ajouté les echo après mes tests initiaux, donc si tu préfères en dehors de ces OK, rien ne s'affiche. Dans le code source de la page, j'ai bien les "OK" qui s'affichent.
- De base, la variable $mail->SMTPDebug est à 0, je l'ai mise à 1 pour voir s'il y avait des erreurs, puis j'ai vu quelqu'un qui la mettait à 2 quand j'ai recherché d'autres exemples sur le net. Résultat identique, pas de retour du serveur SMTP.
- Sur le même serveur, j'ai un forum IPB qui tourne avec les mêmes informations SMTP, et ça fonctionne (je n'ai pas réussi à trouver quelle fonction PHP IPB utilise pour envoyer ses mails, mais je suppose que c'est un dérivé de PHPMailer)
- Ca tombe bien, j'ai un compte Gmail, j'ai mis les informations comme si je configurais un Outlook, le mail ne part pas non plus, et pas plus d'informations de la part du script.
- Je suis d'accord avec toi pour les echos, j'ai fais ça vite fait, j'en ai marre de chercher ^^ Faut juste savoir quel OK X se trouve où dans le code ;-)
- J'ai ajouté les echo après mes tests initiaux, donc si tu préfères en dehors de ces OK, rien ne s'affiche. Dans le code source de la page, j'ai bien les "OK" qui s'affichent.
- De base, la variable $mail->SMTPDebug est à 0, je l'ai mise à 1 pour voir s'il y avait des erreurs, puis j'ai vu quelqu'un qui la mettait à 2 quand j'ai recherché d'autres exemples sur le net. Résultat identique, pas de retour du serveur SMTP.
- Sur le même serveur, j'ai un forum IPB qui tourne avec les mêmes informations SMTP, et ça fonctionne (je n'ai pas réussi à trouver quelle fonction PHP IPB utilise pour envoyer ses mails, mais je suppose que c'est un dérivé de PHPMailer)
- Ca tombe bien, j'ai un compte Gmail, j'ai mis les informations comme si je configurais un Outlook, le mail ne part pas non plus, et pas plus d'informations de la part du script.
- Je suis d'accord avec toi pour les echos, j'ai fais ça vite fait, j'en ai marre de chercher ^^ Faut juste savoir quel OK X se trouve où dans le code ;-)
Tu as essayé .. ne serait ce que la parti du IF que je t'ai mis ?
... ca t'affiche quoi ???
if ($mail->Send()) { echo "<br> Mail envoyé ! "; $success = "<font color='green'>Un mail contenant votre nouveau mot de passe vous a été envoyé.</font>"; } else { echo "<br>Erreur lors de l'envoie du mail !! "; echo $mail->ErrorInfo; }
... ca t'affiche quoi ???
Object ( [Version] => 5.2.9 [Priority] => 3 [CharSet] => UTF-8 [ContentType] => text/html [Encoding] => 8bit [ErrorInfo] => [From] => forum@MON-DOMAINE.fr [FromName] => Forum MON-DOMAINE [Sender] => forum@MON-DOMAINE.fr [ReturnPath] => [Subject] => Votre nouveau mot de passe sur MON-DOMAINE [Body] => Test [AltBody] => Test [Ical] => [MIMEBody:protected] => [MIMEHeader:protected] => [mailHeader:protected] => [WordWrap] => 0 [Mailer] => smtp [Sendmail] => /usr/sbin/sendmail [UseSendmailOptions] => 1 [PluginDir] => [ConfirmReadingTo] => [Hostname] => [MessageID] => [MessageDate] => [Host] => mail.MON-DOMAINE.fr [Port] => 25 [Helo] => [SMTPSecure] => [SMTPAuth] => 1 [Username] => forum@MON-DOMAINE.fr [Password] => PASSWORD [AuthType] => [Realm] => [Workstation] => [Timeout] => 300 [SMTPDebug] => 0 [Debugoutput] => echo [SMTPKeepAlive] => [SingleTo] => [SingleToArray] => Array ( ) [do_verp] => [AllowEmpty] => [LE] => [DKIM_selector] => [DKIM_identity] => [DKIM_passphrase] => [DKIM_domain] => [DKIM_private] => [action_function] => [XMailer] => [smtp:protected] => [to:protected] => Array ( [0] => Array ( [0] => sipheriondfbdfb@gmail.com [1] => ) ) [cc:protected] => Array ( ) [bcc:protected] => Array ( ) [ReplyTo:protected] => Array ( [forum@MON-DOMAINE.fr] => Array ( [0] => forum@MON-DOMAINE.fr [1] => Forum MON-DOMAINE ) ) [all_recipients:protected] => Array ( [sipherionsdfsdfsf@gmail.com] => 1 ) [attachment:protected] => Array ( ) [CustomHeader:protected] => Array ( ) [lastMessageID:protected] => [message_type:protected] => [boundary:protected] => Array ( ) [language:protected] => Array ( ) [error_count:protected] => 0 [sign_cert_file:protected] => [sign_key_file:protected] => [sign_key_pass:protected] => [exceptions:protected] => )
J'ai remplacé les informations en modifiant les adresses mail et en remplaçant le domaine.
Question :
Est ce que malgré l'instruction
"Il vaut mieux savoir tout chercher que chercher à tout savoir."
Est ce que malgré l'instruction
error_reporting(E_ALL);il peut y avoir un paramètre qui l'écrase ? Car je n'ai rien d'autre sur mon fichier, et quand je met des noms de variables bidons je n'ai pas de message d'erreur, idem si je provoque une erreur (genre oubli d'une parenthèse), pas d'erreur php :$ Config serveur ? Apache ?
"Il vaut mieux savoir tout chercher que chercher à tout savoir."
En ajoutant la class smtp ça fonctionne.....
Comment ? C'est bizarre, j'ai trouvé cette information nulle part !!
Un très grand merci à toi ! Si j'avais su, j'aurais fais un include de toutes les class de PHPMailer ! =)