[résolu] Fonction mail, je ne reçois rien...

Fonction mail, je ne reçois rien... [résolu] - PHP - Programmation

Marsh Posté le 31-01-2006 à 18:51:40    

Salut à tous,
J'ai un gros problème qui me rend fou, j'ai un formulaire qui teste les entrées et qui envoie un mail en fonction du destinataire choisi.
 
Le problème est que tout fonctionne bien  :)  ...sauf que je ne reçois jamais de mail  :fou:  j'ai meme fait le test suivant :

Code :
  1. mail("$mail", "$sujet", "$message" );
  2. if (mail("$mail", "$sujet", "$message" )) {
  3. echo "Envoi du mail réussi!";}
  4. else {
  5. echo "Echec de l'envoi du mail!";}
  6. echo $mail; //pour voir si les valeurs sont bonnes...
  7. echo $sujet; //pour voir si les valeurs sont bonnes...
  8. echo $message; //pour voir si les valeurs sont bonnes...


Et on me retourne sans cesse : "Envoi du mail réussi!" Meme quand je suis offline. J'ai fait plein de tests, sur mon ordo de dévellopement, sur un serveur web (que je n'administre pas), tout fonctionne bien mais je n'ai jamais rien reçu. J'ai modifié php.ini (SMTP = localhost ou SMTP = "adresse smtp du FAI" ) essayé différents destinataires (au cas ou le mail était considéré comme spam par le serveur) mais rien n'y a fait... Je tourne en rond...
Quelqu'un a-t-il une piste?
Merci d'avance pour vos réponses
A+  :)


Message édité par tourdball le 03-02-2006 à 10:35:19
Reply

Marsh Posté le 31-01-2006 à 18:51:40   

Reply

Marsh Posté le 31-01-2006 à 18:59:09    

Citation :


Retourne TRUE si le mail a été accepté pour livraison, FALSE sinon.
 
Il est important de noter que ce n'est pas parce que le mail a été accepté pour livraison qu'il arrivera à destination.


http://www.php.net/manual/fr/function.mail.php
 
Ton problème se situerait pas ici ?

Citation :

Pour que la fonction mail() soit disponible, il faut que PHP ait accès au service sendmail sur le serveur, au moment de la compilation. Si vous utilisez un autre programme de mail, comme qmail ou postfix, assurez-vous d'utiliser les bonnes API. PHP va commencer à chercher sendmail dans votre PATH, puis, dans les dossiers suivants : /usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib. Il est hautement recommandé d'avoir sendmail de disponible dans votre PATH. De plus, l'utilisateur qui compile PHP doit avoir le droit d'accéder à l'exécutable sendmail.


http://www.php.net/manual/fr/ref.mail.php
 
Jamais utilisé cette fonction, mais à mon avis la solution à ton problème est dans un des deux liens

Reply

Marsh Posté le 01-02-2006 à 12:52:11    

En dehors de windows (pour windows je ne suis pas certain que ca soit pareil) la fonction "mail()" n'existerait pas du tout si sendmail ou un sendmail-wrapper n'était pas disponible au moment de la compilation.
 
Par contre, il est à noter que seul les versions de php pour windows ou netware sont capable d'utiliser directement les serveur SMTP. Toutes les autres versions ignorent donc les options SMTP pour la simple et bonne raison que c'est des versions qui ne disposent pas du code source nécessaire à l'utilisation d'un serveur SMTP.
 
S'il n'est pas sous windows, je suis sur que son probléme vient de là et qu'en fait il est sur un serveur dont le sendmail (ou le sendmail-wrapper) est réglé pour ne pas envoyer de mail à l'extérieur ou sur lequel ce programme n'a pas accés à un serveur DNS.

Reply

Marsh Posté le 01-02-2006 à 12:57:52    

Comment peut-on vérifier la présence de sendmail ?
Si on a pas accès au serveur !!

Reply

Marsh Posté le 01-02-2006 à 16:33:35    

bonjour à tous et merci de vous intéresser à mon problème,
Voici ce que me dit mon phpinfo concernant l'encoi de mail :
 
sendmail_from      no value      no value
sendmail_path      /usr/sbin/sendmail -t -i       /usr/sbin/sendmail -t -i
Path to sendmail       /usr/sbin/sendmail -t -i
SMTP   localhost   localhost
 
le fichier /usr/sbin/sendmail est bel et bien présente, j'ai aussi fait un man sendmail mais je suis un peu resté bloqué...
 
bref, Qu'en dites-vous?


Message édité par tourdball le 01-02-2006 à 16:34:18
Reply

Marsh Posté le 01-02-2006 à 21:36:16    

ta variable $mail est-elle renseignée correctement ?  
Je te conseille d'essayer avec une valeur et non pas une variable et sans fioritures, pour commencer. Le message 'envoi du mail réussi' ne veut pas dire que ton adresse est valable :

Code :
  1. mail('toto@monserveur.fr', 'un essai', 'ça marche !');


Pourquoi envoies-tu d'ailleurs deux fois le message ?

Code :
  1. #
  2. mail("$mail", "$sujet", "$message" );//une fois...
  3. #
  4. if (mail("$mail", "$sujet", "$message" )) {//deux fois... kézako ?
  5. #
  6. echo "Envoi du mail réussi!";}
  7. #
  8. else {
  9. #
  10. echo "Echec de l'envoi du mail!";}


Message édité par peter45 le 01-02-2006 à 21:36:36
Reply

Marsh Posté le 02-02-2006 à 10:25:50    

salut peter,
çà ne change rien... je ne sais plus quoi faire...

Reply

Marsh Posté le 02-02-2006 à 11:50:01    

IL semble que le problème se situe plus au niveau de la machine... en fait, le mail ne sort pas de la bécane...

Reply

Marsh Posté le 02-02-2006 à 14:49:25    

tourdball a écrit :

salut peter,
çà ne change rien... je ne sais plus quoi faire...


As-tu essayé en local sur ta machine (avec easy php)? Tu dois paramétrer ton serveur SMTP avec celui de ton provider. Tu auras déjà ainsi la preuve que ton code est bon.
Sur quel serveur souhaites-tu faire tourner ton script ?
 
Voila ce que j'ai dans mon php ini en local-sur-ma-machine-a-moi :
 
short_open_tag On On
SMTP smtp.free.fr smtp.free.fr (pas localhost, sauf si tu as installé un serveur smtp sur ta machine))
smtp_port 25 25


Message édité par peter45 le 02-02-2006 à 14:52:37
Reply

Marsh Posté le 02-02-2006 à 15:23:22    

peter45 > phpinfo() lui a retourné "/usr/sbin/sendmail -t -i" comme valeur du "sendmail_path", il est donc sur un serveur unix. PHP ne dispose donc pas des fonctionalités nécessaire à l'accés direct à un serveur smtp. Par contre qu'il teste son code sur un serveur sous windows pour s'assurer de la validité de son code est une bonne idée.
 
tourdball > Si tu veux pouvoir envoyer un mail depuis ce serveur là, il faut que tu demandes à l'adminsitrateur du serveur de régler le sendmail (ou le logiciel d'envoie de mail correspondant au sendmail-wrapper) pour permettre l'envoie de mail à d'autres serveurs. Tant que le programme d'envoie de mail est réglé pour ne pas envoyer à l'extérieur, tu ne pouras rien faire.

Reply

Marsh Posté le 02-02-2006 à 15:23:22   

Reply

Marsh Posté le 03-02-2006 à 10:31:21    

Salut les gars et merci pour vos réponses,
 
En fait j'ai trouvé la solution sur un forum d'administration linux. J'ai commencé par faire des testd'envoi de mail à partir de la console pour me rendre compte qu'ils ne partaient pas, et c'est effectivement un problème de configue de postfix, voici ce que j'ai modifié :
 
j'ai modifié : /etc/postfix/main.cf à la ligne j'ai mis myhostname = wanadoo.fr au lieu de myhostname = localhost.localdomain et meme chose dans etc/mailname.
Le problème est les serveurs qui recevaient les mail voyaient comme envoyeur :"user@localhost.localdomain" et le considérait surement comme danger potentiel".
Voilà!
 
Et le mail est parti!!!
 
Enfin... :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed