fonction mail() de php

Questions sur le développement PHP.

Modérateur : Modérateurs

Avatar de l’utilisateur
goma771
Membre
Membre
Messages : 10
Inscription : lun. 23 janv. 2006, 14:31

Messagepar goma771 » lun. 20 févr. 2006, 19:33

Bonjour,

Je vous explique mon problème,
j'ai installer les programmes suivant sur mon pc (OS : Windows XP Pro) :

Apache 2.0.54
php 5.0.5
phpMyAdmin 2.6.4
mysql 4.1.14

Jusque la tout se passe sans problème, mon site Web est bien héberger sur ma machine.

Mais j'aimerais créer un formulaire de contact au sein de mon site avec la fonction mail() de php.

Pour ce, j'ai modifier le fichier php.ini comme ceci (mon FAI est Skynet et leur SMTP est : relay.skynet.be) :

Code : Tout sélectionner

[mail function]
; For Win32 only.
SMTP = relay.skynet.be
smtp_port = 25


Ensuite, dans ma page html (la page qui pointera, vers la page mail.php) j'ai ceci comme code :

Code : Tout sélectionner

<head>            
<title>Formulaire de contact</title>
</head>              
<body bgcolor="#ffffff">
<form name="contact" action="mail.php" method="POST">
              <center>
              Votre e-mail : <input type="text" name="email"><br>
              Objet : <input type="text" name="objet"><br>
              Votre message : <textarea name="message" rows="10" cols="25"></textarea><br><br>
              <input type="submit" name="submit" value="envoyer">
              </center></form></body>


Et enfin dans ma page mail.php, j'ai ceci :

Code : Tout sélectionner

<?
            
              
    $email = $_POST['email'];
    $objet = $_POST['objet'];
    $message = $_POST['message'];
              
            
    if (mail ("monnom@skynet.be", "$objet", "$message","FROM: $email")){
    echo 'message envoyé !';} else { echo 'problème lors de l\'envoi !';}
            
            
?>


Lorsque je teste tout cela en ligne, une fois que je clicke sur envoyer, il me dit que l'email à bien été envoyer,
mais je ne reçoit jamais les emails sur ma boîte de réception !!!!
Je n'y comprends rien !!!

Est ce que mon fichier php.ini est bien configuré ? est ce qu'il ne manque pas quelque chose?
Faut-il que j'installe un sendmail sur mon serveur ? si oui, ou le trouver, et coment le configurer ?

Je sais vraiment plus quoi faire, j'ai effectué plein de test, mais sans résultats !!!

Si quelqu'un pourrait me donner un coup de pouce, ce serait cool.

Merci d'avance. ;)

Avatar de l’utilisateur
xgarreau
Pilier de forum
Pilier de forum
Messages : 1747
Inscription : jeu. 08 juil. 2004, 9:41
Localisation : ZazouLand @ La Rochelle
Contact :

Messagepar xgarreau » mar. 21 févr. 2006, 9:53

Ta config m'a l'air bonne ...

Essaie de mettre ton adresse dans sendmail_from dans le php.ini

Refais le test avec un message simple sur une seule ligne et sans le FROM:

Parfois les serveurs mails obligent à suivre la norme, c'est à dire avoir des lignes terminées par \r\n et non \r ou \n, Si ton problème vient de là, un str_replace volera à ton secours ...

a+
ZazouMiniWebServer : votre serveur web PHP/MySQL/SQLite sur votre pc, cd ou clé usb
Image
http://www.zmws.com/

Avatar de l’utilisateur
goma771
Membre
Membre
Messages : 10
Inscription : lun. 23 janv. 2006, 14:31

Messagepar goma771 » mar. 21 févr. 2006, 14:07

Salut,

J'ai mit mon adresse dans le sendmail_from dans le php.ini, j'ai refais le test sans le FROM:, ET ça fonctionne !!! je reçois bien le mail.
Mais comment dois-je faire pour obtenir l'email de la personne dans l'adresse d'expédition ?
C'est quoi un str_replace ???
Merci à toi.

Avatar de l’utilisateur
goma771
Membre
Membre
Messages : 10
Inscription : lun. 23 janv. 2006, 14:31

Messagepar goma771 » mar. 21 févr. 2006, 15:18

J'ai également trouver pour obtenir l'adresse de l'expéditeur :

J'ai retirer le send_mail dans le php.ini, et j'ai mit ceci dans la page envoi.
php :

Code : Tout sélectionner

$MailSubject = "Formulaire";

$Headers="From: ".$Email;



$MailBody .= "Nom : $Nom\n";

$MailBody .= "Prenom: $Prénom\n";

$MailBody .= "Societe : $Société\n";

$MailBody .= "Telephone : $Tel\n";

$MailBody .= "Adresse : $Adresse\n";

$MailBody .= "Cp : $Cp\n";

$MailBody .= "Ville: $Ville\n";

$MailBody .= "Message : $Message\n";




mail("monadressemail", "$MailSubject", "$MailBody", "$Headers"); //envoi du message

Header("Location: http://www.monsite.be/remerciement");


Et ça fonctionne, nickel,

le seul ik, c'est que j'aimerais que pour les 4 premiers champs, l'internaute soit obliger de les remplir, sinon un message d'erreur apparaît.
Et pour le cinquième champ, j'aimerais que l'internaute soit obliger de donner une adresse email valide.

Est ce que vous sauriez m'aider, car j'ai passer quelque temps à rechercher cela sur le web , mais tjrs pas trouver !!!
merci

Avatar de l’utilisateur
steph
Nouveau membre
Messages : 3
Inscription : jeu. 16 févr. 2006, 23:46

Messagepar steph » dim. 05 mars 2006, 14:21

Bonjour,


J'ai déjà eu aussi le problème du mail sous php.
Ce que j'ai pu constater c'est qu'il faut mettre une adresse de l'expéditeur (From) dans ton mail. Donc, soit tu le fais dans le php.ini (si tu es administrateur), soit tu le places dans ta commande mail (From) si tu utilises un hébergeur qui n'aura pas mis en place cette adresse dans le php.ini (normal) :

Code : Tout sélectionner

   $param_mail_to = "une adresse client";
   $param_mail_from = "une adresse";
   $param_mail_replyTo = "autre adresse retour";

   $sujet="Le sujet ";

   $entete='From: '.$param_mail_from. "\r\n" . 'Reply-To: '.$param_mail_replyTo."\r\n";
   
   // envoi Mail
   mail($param_mail_to, $sujet, "le corps du message", $entete);


Pour une validation des champs, tu peux les traiter en PHP à la réception du message (POST ou GET) et retourner sur la page de foemulaire si c'est pas bon (difficile d'indiquer à l'utilisateur quel est le champ mal rempli), ou tu passes en javascript pour valider tes champs de formulaire.
Je suis pas le champion de javascript, mais j'ai trouver un site ou il y a ce que tu cherches :

<a href='http://javascript.developpez.com/faq/?page=formObjs#ControleForm' target='_blank'>http://javascript.developpez.com/faq/?page...js#ControleForm</a>

Pour une validation d'adresse mail correcte, tu peux surement vérifier que le format est bon toto.tutu@fai.com. C'est déjà une piste.

Je crois qu'il est possible de vérifier qu'une adresse est valide avec php (genre de ping pour une adresse mail), mais je ne sais pas trop ou chercher (peut être un autre forum de php)

Je ne sais pas si tu attends encore des réponses, mais j'espère que ça t'éclaireras..


Bon courage

JollyAnt
Nouveau membre
Messages : 1
Inscription : dim. 09 août 2009, 6:26

Re: fonction mail() de php

Messagepar JollyAnt » dim. 09 août 2009, 6:27

J'ai trouvé ce post extrêmement intéressant. Merci beaucoup!

Pret immobilier


Revenir vers « PHP »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités