Page 1 sur 2

Php mail erreur NULL

Posté : 25 oct. 2020, 19:19
par Herve_be
Bonjour,
J'envoie des mails en php, ça fonctionne très bien, voici mon code

Code : Tout sélectionner

if (mail($Mail, $Subject, $message, $headers)) { echo "Sent"; } else { $Return = error_get_last(); echo var_export($Return, true); }
Rarement ça ne fonctionne pas mais dans ce cas la dernière ligne donne NULL
je ne peux donc pas savoir où est le problème : comment faire ?
Grand merci d'avance

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 09:20
par Spols
Tu peux aller voir dans les fichier Log d'erreur de ton serveur

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 11:05
par Herve_be
Merci, je vais toujours aller voir (je ne sais pas où se trouve ce fichier : j'ai demandé au service technique de mon serveur).
J'aurais cependant voulu récupérer l'erreur au moment où elle se produit afin de pouvoir expliquer à l'utilisateur comment il peut la résoudre.
La méthode que j'utilise n'est-elle pas correcte ?

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 12:15
par @rthur
Si error_get_last() te renvoie NULL, c'est qu'il n'y a pas eu d'erreur au niveau de PHP.
Du coup le problème est peut être au niveau du serveur mail qui est utilisé quand tu utilises la fonction mail()

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 12:26
par Herve_be
Peut-être mais cette erreur n'est pas systématique, c'est ça qui est bizarre.
Je veux dire qu'invoquant un script php pour envoyer un mail la plupart du temps ça fonctionne très bien.
A de très rares occasions la fonction mail() ne retourne pas True : je cherche à savoir pourquoi.

Question subsidiaire :

Code : Tout sélectionner

echo var_export($Return, true);
donne NULL, comment puis-je l'intercepter pour ne pas répondre NULL ?
Comme ceci ?
$Err = var_export($Return, true);
if ($Err == "NULL")
{
echo "Problème lors de l'envoi du mail";
}
else
{
echo $Err;
{

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 16:45
par Herve_be
J'ai trouvé l'error_log : pas de trace des erreurs en question.

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 17:06
par Herve_be
Je vais essayer avec var_dump
Au lieu de

Code : Tout sélectionner

$Return = error_get_last(); $Return=var_export($Return, true);
j'ai fait

Code : Tout sélectionner

$Return = error_get_last(); ob_start(); var_dump($Return); $Return=ob_get_clean();

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 17:14
par or 1
https://www.php.net/manual/fr/function. ... t-last.php
"Retourne NULL s'il n'y a actuellement aucune erreur. "
quand la fonction mail retourne false, elle ne génère pas une erreur.

Re: Php mail erreur NULL

Posté : 26 oct. 2020, 17:30
par Herve_be
OK, mais alors pourquoi false ?
Pourquoi ne retourne-t-elle pas true s'il n'y a pas d'erreur ?

Re: Php mail erreur NULL

Posté : 27 oct. 2020, 17:22
par Herve_be
Bonjour,
J'ai posé la question au service technique de mon serveur, réponse :
Nous n'offrons pas de journaux d'erreurs de messagerie php.
Pour définir votre propre journal des erreurs php, le code suivant doit être présent dans votre fichier php
ini_set ('track_errors', 1);
ini_set ('log_errors', 1);
ini_set ('error_log', '/customers/f/c/5/domain.com//httpd.www/php_error.log');

Cela signifie-t-il que je devrais ajouter ces instructions dans chaque fichier php ?
N’est-il pas possible de les mettre dans php.ini ?

Re: Php mail erreur NULL

Posté : 27 oct. 2020, 20:22
par @rthur
Si la fonction mail() te renvoie false, il n'y a pas d'erreur au niveau de PHP.
Mais une erreur au niveau du serveur SMTP (qui gère l'envoi des email) de ton hébergeur.

Donc contacte ton hébergeur pour savoir pourquoi.

Ce n'est pas au niveau des logs PHP que tu auras un message d'erreur puisque PHP s'exécute très bien.

Re: Php mail erreur NULL

Posté : 28 oct. 2020, 10:42
par Herve_be
Bonjour,
Dans la majorité des cas l'envoi du mail via php fonctionne très bien.
Ce n'est qu'exceptionnellement que mail() retourne False : n'y a-t-il vraiment pas moyen de savoir pourquoi au moment où le problème se pose afin de pouvoir informer directement l'utilisateur autrement que par "l'envoi du mail a échoué" ?

Re: Php mail erreur NULL

Posté : 28 oct. 2020, 15:35
par @rthur
Ça fait 3 fois qu'on te répète la même chose :

La fonction mail() transmet les données que tu lui passes en paramètre au serveur de mail (SMTP) configuré par ton hébergeur.
Si la fonction renvoie false, c'est que le serveur de mail SMTP soit n'a pas répondu, soit a rencontré une erreur.

Le fait de renvoyer false n'est pas une erreur PHP : PHP a fait son boulot, c’est-à-dire transmettre les infos au serveur de mail.

Si tu veux savoir pourquoi le serveur mail a répondu false, il faut regarder les logs du serveur de mail.
Contacte donc ton hébergeur, tu le payes pour ça.

Re: Php mail erreur NULL

Posté : 28 oct. 2020, 16:14
par Herve_be
J'ai bien compris que l'erreur ne vient pas de php mais du serveur SMTP, j'ai demandé le log du serveur.
Il n'empêche que je ne trouve toujours pas la réponse à ma question que je suis bien obligé de répéter :
n'y a-t-il vraiment pas moyen de savoir pourquoi au moment où le problème se pose afin de pouvoir informer directement l'utilisateur autrement que par "l'envoi du mail a échoué" ?

Re: Php mail erreur NULL

Posté : 28 oct. 2020, 16:49
par Herve_be
Entretemps j'ai reçu le log SMTP, il y a bien une erreur, mais je ne comprends pas ce que ça veut dire :
Message rejected due to content policy (17fd90f2-16a9-11eb-bb66-d0431ea8a29d) YSA