2009-10-23 12 views
1

J'ai mis en place un formulaire de contact AJAX sur le site web d'un client.PHP mail() - Email non reçu

Le problème est que l'e-mail ne passe pas à la boîte de réception du client.

Je mis en place le client avec Google Apps (de la même façon que je l'ai fait pour moi-même).

J'ai utilisé le même formulaire de contact avec mon adresse e-mail et il fonctionne. Mais avec toutes les adresses e-mail sur leur domaine, ce n'est pas le cas!

Tous les membres du domaine reçoivent des courriels « ordinaires ».

Quelle pourrait être la différence qui empêche les courriers électroniques() de passer?


MISE À JOUR

Ok donc je réussi à le résoudre. Il s'avère que l'utilisation d'un CNAME pour pointer le domaine vers le bon serveur ne suffisait pas pour sendmail alors j'ai dû le changer en un enregistrement A pointant directement vers le serveur. Etrange mais vrai. Merci pour l'aide les gens, vous me pointé dans la bonne direction :)

+0

est le courrier va au dossier de courrier indésirable? – Vamos

+0

Désolé oublié de mentionner que: Non, ce n'est pas – simonhamp

+0

BCC vous à un courrier électronique non sur le domaine et un supplémentaire sur le domaine, voir si vous obtenez ceux-ci. – random

Répondre

2

Cela dépend des paramètres sur votre serveur et le serveur sur l'extrémité de réception.

hotmail par exemple nécessite l'utilisation de correctement configuré SPF records.

beaucoup de courrier de réception des serveurs (y compris hotmail) nécessitent l'e-mail à provenir d'un Fully Qualified Domain Name. Il est très possible que vos e-mails envoyés depuis PHP ne respectent pas cette règle. (Il y a une bonne chance qu'ils proviennent de « apache »)
voir hotmail self help et hotmail postmaster info

PHP's mail() function ne comprend pas beaucoup d'en-têtes avec votre courrier, vous aurez donc besoin de les fournir vous-même.

Le plus de houblon votre courrier fait sur son chemin à lui destination, plus il est susceptible d'être étiqueté comme spam. Il peut donc être préférable de ne pas utiliser la fonction de messagerie de PHP et d'utiliser à la place un mail library qui se connecte à un serveur SMTP comme le fait votre application de messagerie de bureau.

Dans l'ensemble, je mettrais mes paris sur une bibliothèque externe: Pear::Mail (documentation)

Vous pouvez également lire: how do you make sure email you send programmatically is not automatically marked as spam

MISE À JOUR
A défaut de contrôle SenderId ou SPF peut obtenir votre Le message a été abandonné avant même qu'il ne frappe la boîte de réception des utilisateurs. Le message ne finira pas dans le dossier de courrier indésirable des utilisateurs, il ira directement à/dev/null. Je sais que c'est au moins vrai pour hotmail et le courrier en direct. Je ne vois aucune raison pour que d'autres hébergeurs n'aient pas mis en place la même politique.

+0

Je suis d'accord avec ce tout coeur, mais pourquoi ça marche pour moi et d'autres clients en utilisant la même configuration, mais pas celui-client? C'est très étrange! – simonhamp

+0

Si vous avez déjà accepté/répondu/envoyé un e-mail à cette adresse, cela affectera les filtres sur votre serveur de réception. Et tous les serveurs ne vérifient pas la conformité de l'enregistrement SPF. – Jacco

+0

Êtes-vous en train de dire que ce message serait supprimé avant même d'avoir atteint le compte de l'utilisateur? Donc, ils n'en auraient aucune trace? Ce serait un méga FAIL pour le courrier électronique si cela est vrai! – simonhamp

-1

Je recommande d'utiliser la bibliothèque PHPMailer (y compris leur SMTP) à la place. Il est fiable par rapport au courrier et vous permet de créer des emails entièrement personnalisés.

http://phpmailer.worxware.com/

+2

Encore une fois, je suis d'accord, mais comprendre pourquoi cela ne fonctionne pas dans ce cas est plus utile pour moi que «juste le faire fonctionner» – simonhamp

+0

la fonction de messagerie devrait fonctionner. Envoyer des mails via un sendmail local est généralement le meilleur moyen de les livrer. – MarkR

+0

je suis d'accord, alors utilisez-le au lieu de passer des heures et des heures à demander au forum pourquoi le courrier non fiable() ne fonctionne pas pour vous sur cette machine particulière. – dusoft