mail () échoue mais renvoie true
Je suis en train d'utiliser le php mail()
fonction sur mon serveur. Bizarrement, elle retourne vrai, mais je ne reçois rien dans ma boîte e-mail.
Encore le cpanel e-mail transitaire fonctionne bien.
Donc pro ce n'est pas une configuration de chose depuis le transitaire m'envoie des e-mails?
J'ai essayé d'ajouter:
ini_set("sendmail_from", "[email protected]");
Mais cela ne fonctionne pas.
Voici mon code:
$subject = "My Subject";
$body = "Email Body ";
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if (mail($email,$subject,$body,$headers))
echo "Sent!";
else
echo "Fail!";
source d'informationauteur John
Vous devez vous connecter pour publier un commentaire.
Il ya une multitude de raisons qui peuvent provoquer ce problème. Voici quelques-unes:
mail()
renvoie vrai si le serveur de courrier sortant accepte le message pour la livraison. Vous aurez besoin pour résoudre les autres possibilités pour trouver le point de défaillance.La
mail()
fonction très rarement renvoie autre chose quetrue
. Il ne se soucie du fait que ça a donné avec succès l'e-mail pour le MTA (Mail Transfer Agent - c'est à dire le programme qui fait l'envoie).Le MTA ne rejeter immédiatement un e-mail si il est mal formé. Dans ce cas, vous recevrez un message d'erreur en PHP. Mais il peut aussi rejeter un e-mail ou de ne pas envoyer après qu'il a accepté de PHP, pour une variété de raisons, aucun de qui PHP aura une idée à ce sujet car il a déjà reçu c'est
true
réponse.Votre MTA aurez une erreur du journal que vous pouvez examiner pour plus d'informations si l'erreur se produit localement.
J'ai eu ce problème avec un script que j'ai utilisé c'était de l'envoi et de la réception dans le même domaine. Avez-vous essayé d'envoyer l'e-mail à une adresse e-mail de l'réside sur un autre domaine? Cela pourrait aider à réduire les problèmes possibles.
Nous avons été confrontés exactement le même problème. La solution a été de faire en php.ini définir les sendmail_path.
sendmail_path = "/usr/sbin/sendmail -t-i"
Réglage de la ci-dessus ont résolu le problème.
Consulter vos e-mails.journal après l'envoi d'un e-mail de test:
Ensuite, vous pouvez voir l'ID affecté à la dernier e-mail que vous avez essayé de l'envoyer. E. g. Je vois:
69F3441529 est l'identifiant unique attribué à cet e-mail. Vous pouvez ensuite filtrer les journaux pour toutes les lignes qui ont des ID...
Vous devriez alors être en mesure de repérer tout message d'erreur qui peuvent être présents, et puis Google: -))
Dans mon cas, la modification des paramètres du serveur à partir d'adresses IPv6 pour IPv4 adresses résolu le problème.