Comment fonctionne PHP `mail` travail?
PHP mail
fonction semble livrer le courrier sur un système propre, avec une absence apparente de la configuration effectuée par l'administrateur ou au webmaster (pas de configuration SMTP dans php.ini
, etc.). Comment le mail
fonction de livrer le courrier à un serveur distant?
- Pourquoi en configuration été fait? Sauf si tu veux dire la distribution du courrier au webmaster, il ne fait pas de sens pour le webmaster pour le configurer.
- Vous vous posez la mauvaise question - il n'y a rien de mal avec la fonction mail() en PHP, il n'est pas fiable. Le problème, c'est le contenu et la distribution de vos courriers. Une meilleure question serait " comment puis-je éviter de mes mails, se terminant dans le dossier spam?'.
- il a dit "fiable" mais ce n'est pas vraiment une question...ici
- bien sûr, il est. J'ai demandé comment il fonctionne, pas comment éviter le spam.
- J'aimerais savoir pourquoi c'est arriver downvoted...? C'est une question légitime, demandant comment une fonction d'un langage de script fonctionne.
- Souvent, PHP est un frontend pour le système de commandes / c commandes avec une forte dépendance à l'égard de linux. Donc à la recherche d'un manuel et d'un même nom de commande peut souvent aider, aussi. unixhelp.ed.ac.uk/CGI/homme-cgi?mail
Vous devez vous connecter pour publier un commentaire.
Sur *nix, il appelle la
sendmail
binaire, qui utilise ensuite la configuration de la messagerie pour acheminer le courrier électronique. Sur Windows, il envoie à un serveur SMTP. Dans les deux cas, l'administrateur met en place le système de messagerie.Vous pouvez détecter comment il fonctionne comme ci-dessous.
Première méthode
À partir des résultats de la commande ci-dessus peut être vu que le
popen()
fonction ouvre le processus de/usr/sbin/sendmail -t -i
.Donc
sendmail
est le lien symbolique àexim4
et doncsendmail -t -i
appelleexim4 -t -i
.Et dans la page de manuel de
exim4
vous pouvez lire au sujet de ces options-t -i
:Deuxième méthode
Installer snoopy et de l'exécution:
Les résultats de la commande ci-dessus montrent la séquence de commandes qui ont été effectuées.
mail() utilise sendmail, qui utilise le DNS pour trouver l'enregistrement MX du domaine cible et les livre directement. thats it.
et depuis le serveur de destination ne sait probablement pas votre adresse ip, surtout si elle est Natés il peut être marqué comme spam.
vous pouvez modifier votre config pour utiliser différents (pièce de théâtre ad connu) serveur smtp pour agir à titre d'intermédiaire.
Ce n'est pas vraiment fiable, en fait, à moins que le sous-jacent
sendmail
ou quelque chose est correctement configuré.Amazon SES a de meilleurs serveurs de n'importe quel serveur que vous utilisez, et reçoit un mail il y a plus de temps qu'avec
mail()
.La vraie raison pour laquelle vous ne devriez pas utiliser
mail()
est parce que l'adresse IP de votre serveur est probablement complètement inconnu des services de messagerie tels que GMail, Yahoo, etc, et il ya une plus grande chance qu'il aura marqué comme spam. Pourquoi fait-il marqué comme spam? Parce quemail()
est très facile et simple à exploiter pour des fins de spam.