PHPMailer() => Pas d'envoi de mail, pas d'erreur, pas d'info

[Résolu/Fermé]
Signaler
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
-
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
-
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 :
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 :)

4 réponses

Messages postés
33537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 septembre 2021
3 729
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 ?
 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();
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
290
lawl

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 ! =)
Messages postés
33537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 septembre 2021
3 729
Bonjour,

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>';
?>




Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
290
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 ;-)
Messages postés
33537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 septembre 2021
3 729
Tu as essayé .. ne serait ce que la parti du IF que je t'ai mis ?
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 ???
Messages postés
33537
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 septembre 2021
3 729
Tu peux aussi faire un :
print_r($mail);

Juste avant le if ....
Qu'est-ce qu'il t'affiche ??
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
290
Allez, puisque tu m'aides, je vais mettre tes messages ;-)

<br> DEBUT DU PROGRAMME <br> Envoie du Mail  
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
290
 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.
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
290
Question :

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."
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
290
J'avais effectivement une option dans le fichier .htaccess qui demandait de n'afficher aucune erreur PHP. Donc les infos du .htaccess ont priorité sur le code PHP.