2008-09-02 5 views
6

Je ne suis pas sûr d'utiliser toute la bonne terminologie ici, alors pardonnez.La fonction PHP mail() fonctionne-t-elle si je ne possède pas l'enregistrement MX

Je viens de mettre en place un site avec un formulaire de contact qui envoie un email en utilisant la fonction PHP mail(). Assez simple. Cependant, le site en direct n'envoie pas réellement l'email, le site de test le fait. Donc ce n'est pas mon code.

C'est un hôte partagé et nous avons un autre site qui a la même fonction qui fonctionne parfaitement, donc ce n'est pas le serveur. La seule différence entre les deux est que le site qui ne fonctionne pas n'a que le serveur de noms pointant vers nous et donc l'enregistrement MX ne touche jamais notre serveur. Donc, ma question est, pourrait-on s'il vous plaît confirmer que la fonction mail() ne fonctionnera pas si nous n'avons pas l'enregistrement MX pointant vers notre serveur. Merci

Répondre

2

Hé les gars merci pour les réponses, c'est vraiment apprécié.

Après avoir ignoré le problème pendant quelques mois, il est revenu, j'ai trouvé la réponse à mes problèmes. En premier lieu, comme vous l'avez suggéré, PHP et la fonction mail() fonctionnaient comme prévu. Le courrier était envoyé. Le problème se situe quand l'email est envoyé, il présume simplement que parce qu'il est envoyé de mydomain.com à l'email de *@mydomain.com que l'email lui-même est hébergé sur le même serveur, ainsi il est envoyé là et ignore l'enregistrement MX. OK c'est un peu plus compliqué que ça, mais c'est le jist général.

Editer: J'ai trouvé une meilleure version du sujet sendmail and MX records when mail server is not on web host.

0

Oui, vous pouvez mettre dans ce que vous voulez dans le champ «de» et cela fonctionnerait toujours.

3

Oui. Cela fonctionnera très bien. J'ai un script PHP utilisant la fonction mail() avec les enregistrements MX définis sur Google Apps.

Si les deux scripts se trouvent sur des hôtes différents (cela n'est pas très clair pour votre publication), assurez-vous que l'hôte ne bloque pas certains en-têtes personnalisés. J'ai eu des problèmes avec ceci lors de la création de mon script, mais en supprimant tout sauf l'en-tête De a résolu le problème.

2

Certains hôtes (Godaddy est le pire) bloquent votre utilisation de sendmail et mail().

J'utilise généralement smtp pour envoyer des emails à partir de mes applications php et avec PHPMailer c'est super facile. Beaucoup d'applications utilisent des versions plus anciennes de PHPMailer et parfois la mise à jour peut aider. Il est également assez facile d'ajouter rapidement des scripts courts.

1

La fonction mail() envoie le courrier du serveur hébergeant le script. Étant donné que de nombreux fournisseurs d'hébergement partagé hébergent des serveurs de messagerie distincts et que la fonction mail() ne prend en charge aucune sorte d'authentification, de nombreux fournisseurs d'hébergement partagé la bloquent.

1

Si le site utilise le SPF, n'oubliez pas d'inclure le site d'envoi dans votre enregistrement SPF. Pour plus d'informations, voir here.

Questions connexes