2010-05-12 4 views
0

Je ne peux pas semble envoyer un e-mail en utilisant le courrier de PHP(). J'ai également essayé PHPMailer et Swiftmail sans succès. Toutefois, la commande suivante sur le serveur envoie le courrier avec succès.travail sendmail mais PHP mail() est un échec

cat test.txt | mail -s "test mail" [email protected] 

Existe-t-il un moyen de déterminer d'où vient le problème? mail() semble juste retourner vrai ou faux.

Répondre

0

sur PHP> = 5.2, il y a error_get_last() pour récupérer une erreur qui a été renvoyée par le dernier appel de fonction. Il y a des détails sur la façon d'obtenir des informations équivalentes à partir des anciennes versions de PHP sur la page liée.

Quant à PHPMailer, il y a la propriété $mailer->ErrorInfo qui contient la dernière erreur est survenue. SwiftMailer doit avoir quelque chose de similaire. Très probablement si le courrier fonctionne à partir de la ligne de commande mais pas à partir de PHP ou des bibliothèques de mailing, il y a une mauvaise configuration en jeu. Je suppose que votre hôte n'a pas le paramètre PHP sendmail_path configuré.

0

Activer toutes les erreurs, les avertissements et les avis avec error_reporting (E_ALL). Avoir les erreurs aller quelque part utile ou enregistrer un rappel qui fait des choses utiles.

Ensuite, vous verrez ce qui se passe. La gestion des erreurs PHP est inutile par défaut (et ses valeurs par défaut sont différentes partout, donc vous devez l'ignorer en pratique). Selon toute vraisemblance, il est configuré

faire SMTP localhost, que votre MTA ne permet pas de relayer. Changez sa config pour utiliser sendmail à la place, ou corrigez votre MTA pour autoriser le relayage depuis localhost.

Questions connexes