comment ça marche cette function Mail()

Eléphant du PHP | 417 Messages

26 nov. 2011, 15:54

Bonjour a tous le monde l'italien et de retour :D

je voulais savoir comment ça marche la fonction mail pour envoyer un mail après l'inscription dans un site?

j'ai trouver ce script dans un site mais ça marche pas
<?php 
     $headers ='From: "exemple"<[email protected]>'."\n"; 
     $headers .='Reply-To: [email protected]'."\n"; 
     $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n"; 
     $headers .='Content-Transfer-Encoding: 8bit'; 

     if(mail('[email protected]', 'test', 'Message de test', $headers)) 
     { 
          echo 'Le message a bien été envoyé'; 
     } 
     else 
     { 
          echo 'Le message n\'a pu être envoyé'; 
     } 
?>
et voici l'erreur que j'ai
Warning: mail() [function.mail]: Failed to connect to mailserver at "127.0.0.1" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\mail.php on line 7
Le message n'a pu être envoyé

sachant que j'ai pas les fichiers ini_set ni php.ini

Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 nov. 2011, 16:07

En fait la fonction mail va transmettre les éléments de ton courrier à un serveur smtp qui va se charger d'envoyer le mail. Sous windows, l'adresse du serveur smtp qui va envoyé le mail est configurée dans le fichier php.ini et a pour valeur par défaut localhost (127.0.0.1).

Et comme tu ne dispose vraisemblablement pas de serveur smtp en local, php ne peut pas envoyer le mail.

Pour rectifier cela, il te faut éditer (ou faire éditer si tu n'as pas les droits dessus) le php.ini pour spécifier quel serveur utiliser (le plus simple étant celui de ton FAI, comme le font les outils de messagerie type outlook :)) ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 417 Messages

26 nov. 2011, 16:21

Ryle toujours là :D merci pour ta réponse

mais comme j'ai dit au début j'ai pas de fichier php.ini faut le créer alors? et je fait appel a ce fichier ou ? et je vais mettre quoi dans ce fichier exactement si vous auriez un exemple ça sera sympa :) avec les paramètre de fai

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 nov. 2011, 16:30

Hum... si tu as php sur ta machine, tu as forcément un fichier php.ini qui traine quelque part :) (et quand tu n'as pas de chance, tu en as même plusieurs, le truc étant de trouver lequel est le bon) ... En général, il est dans le dossier d'installation de php, mais il peut aussi se balader dans le répertoire windows, bref, une petite recherche devrait te permettre de retrouver ce fichier sur ton disque ;)

Une fois que tu l'as trouvé, faut l'éditer avec un bloc note ou autre et rechercher un bloc qui ressemble à ça :

Code : Tout sélectionner

[mail function] ; For Win32 only. SMTP = localhost smtp_port = 25
Il te faut alors remplacer le "localhost" par l'adresse de ton serveur smtp. Quant à une adresse d'exemple, ben tout dépend de ton fournisseur d'accès internet (fai). Si tu passes par orange, ça doit être un truc du genre smtp.orange.fr, si tu passes par free ça sera autre chose... le plus simple c'est de regarder dans ta messagerie les paramètres du compte, tu auras l'information du serveur pop3 (qui permet de recevoir les mails, mais dont on se moque ici) et du serveur smtp (qui te permet de les envoyer, ce qui tombe plutôt bien ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 417 Messages

27 nov. 2011, 14:26

j'ai trouvé dans le dossier php deux fichier qui s'appelant php.ini-development et php.ini-production j'ai trouvé que ces deux :(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 nov. 2011, 19:29

Nope, ça ce sont des exemples de configuration recommandées, pour le dev et la production.

A priori, si tu utilises easyphp, lorsque tu es sur la fenêtre qui t'indique l'état d'apache et mysql, si tu cliques sur le E d'easyphp, tu accèdes à différentes options. En allant dans "configuration > php", il devrait t'ouvrir le fichier de configuration php.ini pour que tu puisses l'éditer :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 417 Messages

27 nov. 2011, 22:12

ah ^^ on suivant les chemins que tu m'as donnée je me retrouve devant un fichier php.ini lol ouvert avec un bloc note j'ai changé le smtp par smtp.sfr.fr

et voici l'erreur que j'ai cette fois

Warning: mail() [function.mail]: SMTP server response: 553 5.1.8 <[email protected]>: Sender address rejected: Domain not found in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\mail.php on line 7

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 nov. 2011, 22:38

C'est à cause de l'adresse mail avec laquelle tu tentes d'envoyer le mail (sender) qui est refusée... A priori sfr ne te laisse pas envoyer un mail avec n'importe quelle adresse. Du coup pour tes tests en local, il faut que tu utilises ton adresse mail en tant qu'expéditeur (que tu peux définir dans le php.ini, pas loin de là où tu as renseigné le smtp :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 267 Messages

27 nov. 2011, 22:41

salut,

L'erreur signifie que tu as mis une adresse d'expéditeur invalide, en l'occurrence "[email protected]"
Apparemment, le serveur SMTP de SFR effectue une vérification de l'adresse de l'expéditeur, ce qui n'est pas le cas de tous les serveurs SMTP
Je sais pas si le serveur vérifie uniquement le domaine "test.com" ou l'adresse entière "[email protected]"
Essaie avec ton adresse free, ça devrait fonctionner

@+
dix2

Eléphant du PHP | 417 Messages

27 nov. 2011, 23:29

ah dix j'ai pas d'adresse enfait je suis conencté juste a un wifi de sfr public :/ lol

Eléphant du PHP | 267 Messages

27 nov. 2011, 23:55

essaie avec "[email protected]"
d'après le message d'erreur :
Warning: mail() [function.mail]: SMTP server response: 553 5.1.8 <[email protected]>: Sender address rejected: Domain not found
c'est possible qu'il ne fasse qu'une vérification du domaine

Eléphant du PHP | 267 Messages

27 nov. 2011, 23:59

essaie aussi avec une adresse gmail, hotmail ... valide
c'est possible que ça passe

Eléphant du PHP | 417 Messages

28 nov. 2011, 00:17

essaie aussi avec une adresse gmail, hotmail ... valide
c'est possible que ça passe

Ah oui :D ça marché avec un gmail :P

Merci dix2

Eléphant du PHP | 417 Messages

29 nov. 2011, 12:42

Alors alors j'ai hébergé mon site et la function mail ne marche plus c'est normal vu que le smtp que j'ai met en local concerne le fournisseur d'internet que j'utilise mais la question comment je peux faire pour modifier le smtp ? et qui sera le nouveau ?
sachant que le pack d'hébergement que j'ai pris n'active pas le smtp ds ce cas on m'indique "qu'il faudra alors utiliser le serveur d'envoi de votre fournisseur d'accès à internet" mais le quel? mon fournisseur? ou celui de mon hébergeur ??

pour plus d'infos que le pack que j'ai pris c'est ça pourrai vous aidez pour me répondre :)
http://www.planet-work.fr/grand_public/ ... t-web.html

c'est pack espace

Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 nov. 2011, 23:13

Ton hébergeur est sous linux (cf. sa doc et son phpinfo). Il n'utilise donc pas le smtp pour envoyer les mails, mais la fonction sendmail de linux...

En gros, pas besoin de t'embêter à chercher à modifier un fichier php.ini, tout est déjà configuré et tu devrais normalement juste avoir à faire appel à la fonction mail()

Pis si ça marche vraiment pas, t'as acheté un support par mail et par téléphone dans ton pack ;) (par contre faut bien dissocier l'envoi de mail par php de la gestion des comptes email pop/imap de ton offre)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...