La capture de mail() de PHP erreurs et de montrer raisonnable de l'utilisateur message d'erreur
Je suis en train d'écrire un assez simple registre script php qui utilise PHP intégré dans mail()
fonction pour envoyer à l'utilisateur un lien d'activation.
Le problème c'est que je peux attraper la normale des erreurs telles que la messagerie électronique mise en forme, mais une fois qu'il envoie au serveur et qu'un utilisateur a mis dans une adresse e-mail qui ne répond pas, je ne sais pas comment rattraper cette erreur et indiquer à l'utilisateur ce qui s'est passé.
Par exemple en ce moment je reçois ceci:
Warning: mail() [function.mail]: SMTP, réponse du serveur: 554
: Recipient address rejected: Relais d'accès
refusé dans ** sur la ligne 70
Les idées de ce que je pouvais faire sur les erreurs de ce genre? Je suis au courant d'utiliser le symbole @ pour supprimer l'erreur mais j'ai un peu de vouloir faire plus que ça et à gérer le problème.
OriginalL'auteur Cliftwalker | 2011-02-06
Vous devez vous connecter pour publier un commentaire.
Utiliser le résultat booléen de détecter une erreur:
Alors vous voulez savoir quel erreur interne est la cause du problème, donc à utiliser:
Notez que cela fonctionne avec php 5.2 de correspondance.
Il n'y a aucun moyen de vérifier la livraison ou de transport d'erreur mails avec PHP. Vous avez besoin d'une pop3 gestionnaire pour que.
OriginalL'auteur mario
Une banale erreur dont j'ai souffert de la, était tout simplement un manque de 'sendmail' dans mon système.
Finalement, j'ai installé exim4 et configuré et php mail(...) a bien fonctionné.
Voir aussi:
OriginalL'auteur Yotam
Vous voulez attraper autant que vous pouvez avant de vous envoyer le mail, désinfecter vos entrées assurez-vous qu'il est vraiment ce que vous vous attendez à être
Vous pouvez utiliser
filter_var
de vérifier que l'adresse e-mail est vraiment une adresse,vérifiez que les entiers tombe à l'intérieur de votre permis de gamme, etc.
Définir l'entête du mail à partir de l'adresse à un endroit où vous pouvez le vérifier en cas d'échec des livraisons:
Vous pouvez également vérifier que le courrier a été exécuté comme prévu:
Et une dernière chose, vous ne voulez probablement pas à afficher des avertissements dans un environnement réel, vous pouvez transformer ces off, soit par l'intermédiaire du fichier ini ou à l'aide de
ini_set
.OriginalL'auteur Kristoffer Sall-Storgaard
Le mieux serait d'utiliser une bibliothèque comme Swift Mailer, qui lève des exceptions qui peuvent être facilement manipulés.
Vrai, il n'est pas une réponse à la question, mais elle suggère une façon d'aborder le problème de manière plus pragmatique.
OriginalL'auteur Jan