problème de fonction mail()

Petit nouveau ! | 2 Messages

04 juil. 2007, 12:28

Bonjour,

J'ai actuellement un problème avec la fonction mail().
En effet, j'ai un serveur web avec apache et php5 sur une mandriva 2007. Une des pages de mon site est un formulaire, dont la validation provoque (normalement) l'envoi d'un mail avec les données du formulaire. Jusque là, pas de problème. Le problème c'est que la fonction échoue à chaque fois (retourne false), et dans mon fichier de log http (var/log/http/error_log), je vois la ligne suivante :

mail: no recipients given

Ors, je remplis bien le champ correspondant au destinataire ; et même si je le met manuellement, cela me rend la même erreur...

voici le code :

Code : Tout sélectionner

$destinataire = "[email protected]"; $sujet = "Faute"; $from = "From:serveur@monnomdedomaine\n"; $from .= "MIME-version: 1.0\n"; $from .= "Content-type: text/html; charset= iso-8859-1\n"; $from .='Content-Transfer-Encoding: 8bit'; $message = "\npage : ".$_POST['nompage']. "\nlieu : ".$_POST['lieu']. "\nphrase erronée : ".$_POST['phrase']. "\ncorrection : ".$_POST['correction']; if(mail($destinataire,$sujet,$message,$from)) { header('Location: index.php?page=accueil'); } else { echo "échoué : <br>".$destinataire."<br>".$sujet."<br>".$message."<br><br><br>"; echo '<a href="index.php?page=fautes">Retour</a>'; }
Je tiens à préciser que j'ai aussi essayé sans la variable $from :

mail($destinataire,$sujet,$message)

car cette partie est facultative. Neanmoins, cela renvoit toujours la même erreur...

Sinon, depuis le serveur, en ligne de commande, je peux envoyer des mails sans problème, donc il ne semble pas que cela vienne de là... Merci d'avance pour votre aide!
Modifié en dernier par estyaah le 06 juil. 2007, 19:09, modifié 1 fois.

Mammouth du PHP | 959 Messages

04 juil. 2007, 12:47

salut, sa seré plus simple que tu nous donne l'erreur...
sinon, va la :
http://www.vulgarisation-informatique.com/mail.php
vers le bas de la page, sa t'aidera...

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

04 juil. 2007, 12:56

Le problème c'est que la fonction échoue à chaque fois (retourne false), et dans mon fichier de log http (var/log/http/error_log), je vois la ligne suivante :

mail: no recipients given
;)

Je vois pas trop d'où cela peut venir alors dans les points à vérifier :
Le serveur smtp est bien configuré ? l'utilisateur avec lequel tu envois le mail a-t-il le droit de le faire ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

04 juil. 2007, 15:00

Le serveur smtp est celui de free (smtp.free.fr). Sur mon serveur, j'ai installé msmtp, client smtp, qui me permet d'envoyer des mails depuis le serveur (ce qui marche très bien en ligne de commande :

Code : Tout sélectionner

#msmtp [email protected] < /fichier
).

Pour ce qui est des droits, j'avoue que je ne sais pas trop comment cela fonctionne à ce niveau là. Mon formulaire est sur un site internet. Je ne sais pas quel est l'utilisateur dans ce cas. Cependant, les droits d'utilisation de msmtp sont en 755 :

Code : Tout sélectionner

-rwxr-xr-x 1 root root 169280 jui 3 12:34 /usr/bin/msmtp*
Normalement, n'importe quel utilisateur peut l'exécuter...

En fait j'ai l'impression que la fonction mail() de php essaye d'envoyer directement sans passer par msmtp, et du coup comme le FAI bloque le port 25 s'il ne passe pas par lui, cela renvoi l'erreur... Mais je ne vois pas ou farfouiller dans la configuration de php à part php.ini (que j'ai épluché sans succès)...