2010-08-05 22 views
1

J'ai une installation par défaut de WAMP Server 2.0.Pourquoi la fonction PHP mail() ne fonctionne pas avec l'installation par défaut de WAMP?

Je suis en train d'envoyer des e-mail en utilisant ce script simple:

<?php 

if (mail('[email protected]', 'My Title', 'Some Text')) { 
    echo "OK"; 
} else { 
    echo "Why ??"; 
} 

?> 

Malheureusement, je reçois l'avertissement suivant:

Warning: mail() [function.mail]: Impossible de se connecter à mailserver sur le port "localhost" 25, vérifiez vos paramètres "SMTP" et "smtp_port" dans php.ini ou utilisez ini_set() dans C: \ My_Path \ send_email.php sur la ligne 3 Pourquoi ??

Quelle pourrait être la raison de cela?

J'attendais envoyer des messages électroniques à être une tâche très simple ... :(

+0

éditez le fichier main() pour le mail(). – Siddiqui

+2

Vous devez avoir accès à un serveur de courrier sortant pour pouvoir envoyer des messages. La fonction 'mail()' se connecte au serveur configuré dans votre fichier php.ini (comme indiqué dans le message d'erreur) et lui demande d'envoyer un message. Je suggérerais de googler * en envoyant un email avec php et gmail * pour un bon tutoriel sur les bases des serveurs 'mail()' et smtp. –

Répondre

6

Pour pouvoir envoyer des courriels que vous avez besoin d'un serveur de messagerie sortant (MTA). Dans la plupart des systèmes Linux, il existe un par défaut, et PHP l'utilisera en soumettant un mail à sendmail, une app/alias Linux pour envoyer du courrier à n'importe quel MTA que vous avez installé

Windows ne comprend pas de MTA par défaut Dans Windows, pour pouvoir envoyer du courrier depuis PHP Vous devez avoir accès à un serveur de courrier électronique sortant et indiquer à PHP l'adresse et le port de celui-ci.Ceci est fait dans php.ini en utilisant les paramètres SMTP et smtp_port.Il sera par défaut localhost sur le port 25. À moins que vous n'ayez configuré vous-même un serveur de messagerie sur cette machine, cela échouera.

Si votre FAI vous fournit un serveur de courrier sortant, par exemple, vous pouvez utiliser son adresse et son numéro de port. Ou, si vous êtes sérieux au sujet de l'envoi de courrier, vous devez configurer votre propre serveur de messagerie sur la machine locale ou sur votre réseau local.

+0

Merci, je suis vraiment à la recherche d'une solution simple et facile à utiliser pour Windows, car je crois que lorsque je mettrai l'application dans un vrai serveur Unix, je n'aurai pas ce problème. Alors, quelle serait la solution la plus simple pour Windows? –

+0

Le plus simple serait simplement de le pointer sur le serveur SMTP de votre FAI, je pense (bien qu'il ne soit pas bon de le faire si vous êtes dans un environnement de test et que vous ne voulez pas que l'email soit envoyé). Ou vous pouvez regarder ces solutions: http://stackoverflow.com/questions/30076/need-a-lightweight-free-windows-smtp-server - ressemble à Windows Server est également livré avec son propre serveur SMTP que vous pouvez installer. – thomasrutter

+0

Notez que si vous utilisez le serveur de courrier électronique sortant de votre fournisseur de services Internet et que vous utilisez une connexion résidentielle, vous devrez respecter leurs politiques qui pourraient interdire l'envoi de listes de diffusion, limiter le nombre de courriels que vous pouvez envoyer. adresse e-mail dans la ligne "De", etc. Si vous voulez envoyer un e-mail sérieux, vous pouvez envisager de configurer vous-même un serveur SMTP ou de payer pour un relais de messagerie externe. – thomasrutter

1

Réponse courte: aucun serveur SMTP n'est configuré pour l'ordinateur local (localhost). Windows n'est pas livré avec un serveur SMTP intégré prêt à sortir de la boîte. Vous pouvez relayer le courrier via un hôte différent (en utilisant la directive php.ini SMTP) - mais il est rare que vous trouviez un relais ouvert pour vos messages de l'environnement de test. Au lieu d'utiliser mail(), vous pouvez utiliser un script tel que PHPMailer qui peut se connecter directement à votre serveur de messagerie sortant avec une authentification appropriée. Voici un quick snippet for Gmail (bien que ce ne soit pas complet) et un full example.

0

Vous pouvez utiliser « Faux Sendmail »: http://glob.com.au/sendmail/

Vous n'avez pas besoin d'un serveur smtp sur votre machine de test, il suffit de définir le chemin du programme dans votre php.ini

Ciao! Stefan