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

Résolu/Fermé
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 24 nov. 2014 à 18:22
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 - 26 nov. 2014 à 11:12
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

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 nov. 2014 à 20:11
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
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 24/11/2014 à 20:39
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 ! =)
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 nov. 2014 à 18:45
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>';
?>




0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
24 nov. 2014 à 19:06
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 ;-)
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 nov. 2014 à 19:20
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 ???
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
24 nov. 2014 à 19:23
Tu peux aussi faire un :
print_r($mail);

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

<br> DEBUT DU PROGRAMME <br> Envoie du Mail  
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par jordane45 le 24/11/2014 à 20:06
 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.
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
Modifié par sipherion le 24/11/2014 à 19:25
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."
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
26 nov. 2014 à 11:12
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.
0