2010-02-23 8 views
2

J'ai un petit script php mailer dans un fichier php qui fonctionne très bien et envoie le courrier bien:PHP mail ne fonctionne pas dans un script, mais le fait dans un autre

$subject = "subject"; 
$mail_body = "mail body"; 
$name = "noreply"; 
$email = "[email protected]"; 
$recipient = "[email protected]"; 
$header = "From: ". $name . " <" . $email . ">\r\n"; 
mail($recipient, $subject, $mail_body, $header); 

Cependant, si je prends cela et faire c'est son propre fichier, ou le mettre dans un fichier différent, ça ne marche pas. Il n'y a pas de messages d'erreur et les e-mails ne sont pas envoyés.

Aucune commande php ini set et aucun fichier php inclus.

Des idées sur les raisons pour lesquelles cela fonctionne dans le script PHP plus grand, mais ne fonctionne pas tout seul?

+0

Quel message d'erreur obtenez-vous, le cas échéant? – meagar

+0

Pouvez-vous fournir des détails sur comment cela ne fonctionne pas? Y at-il des messages d'erreur? Si non, pouvez-vous confirmer que vous avez configuré php.ini pour générer des erreurs? – sidereal

+0

Lorsque vous dites que cela ne fonctionne pas, voulez-vous dire qu'il n'envoie pas de courrier ou que vous recevez une erreur? –

Répondre

1

Tout est OK avec votre code. Je l'ai testé en remplaçant uniquement l'adresse e-mail dans $ destinataire par mon adresse et cela a bien fonctionné (je l'ai testé avec mon e-mail d'entreprise - Outlook sur Exchange et un autre test avec une adresse Hotmail).

  • Mais assurez-vous que les nouvelles lignes de mail_body $ sont "\ n" et pas "\ r \ n". Comme vous pouvez le lire dans la documentation sur le paramètre message:

doivent être séparés Chaque ligne avec un LF (\ n). Les lignes ne doivent pas être plus grandes que de 70 caractères.

  • Assurez-vous que le nom de $ et $ email ne pas caractères interdits comme contiennent <,>, et de nouvelles lignes (\ r \ n ou \ r \ n). Comme Michael le fait remarquer, de nouvelles lignes peuvent mener à des attaques email injection. Vous ne voulez pas que votre formulaire de contact soit utilisé comme une plateforme de courrier par les spammeurs!

Vous devriez envisager d'utiliser une bibliothèque de messagerie comme PHPMailer qui facilitera votre développement depuis mail() est assez difficile pour l'envoi avancé. La plupart de ces bibliothèques couvrent déjà ces attaques et ces normes ...

+0

Je sais que tout va bien avec le code, mais pourquoi pas travailler seul? Cela ne fonctionne que dans le script original que j'ai écrit il y a un moment. Si je viens d'envelopper le texte ci-dessus dans et enregistrer en tant que nouveau fichier, le courrier n'envoie pas. – CheeseConQueso

+0

Les adresses dans $ destinataire sont-elles les mêmes dans vos 2 versions? Sinon, c'est peut-être le filtre anti-spam côté serveur qui intercepte le courrier ... Vous pouvez essayer d'ajouter les en-têtes Reply-To, Return-Path, Message-ID et X-Mailer pour voir si cela aide (voir exemples de php.net). – AlexV

+0

J'ai essayé de mettre le même script de travail dans son propre fichier php et il n'enverrait pas ... – CheeseConQueso

Questions connexes