Page 1 sur 1

Problème d'envoi de mail

Posté : 08 juin 2015, 18:02
par Fil
Bonjour à tous,

En remplissant le formulaire et en appuyant sur le bouton "Envoyer". il est censé envoyer un message quand tout est bien remplis "Votre message nous ai bien parvenu" et sinon le message "Une erreur est survenue et votre mail n'est pas parti".

Mon soucis c que dans tous les cas, il envoi le message "Votre message nous ai bien parvenu" champs du formulaire remplis complètement ou pas. si quelqu'un a une idée je suis preneur merci d'avance.

Partie dans mon html visible dans la page :

Code : Tout sélectionner

<FONT COLOR="#00FF00" ><?php if(isset($erreur)){echo "<p>$erreur</p>";} ?></a></FONT>
Partie php :

Code : Tout sélectionner

if(mail($destinataire,$sujet,$message,$entete)){ $erreur= "Votre message nous ai bien parvenu"; unset($nom); unset($email); unset($message); } else{ $erreur="Une erreur est survenue et votre mail n'est pas parti "; } } ?>

Merci d'avance

Re: Petit soucis php

Posté : 08 juin 2015, 18:14
par racacax
Salut,
Un sujet similaire vient d'être ouvert : http://openclassrooms.com/forum/sujet/petit-soucis-php :p

Re: Problème d'envoi de mail

Posté : 08 juin 2015, 18:42
par tof73
if(mail($destinataire,$sujet,$message,$entete)){
unset($email);

c'est normal d'avoir $destinataire dans un cas et $email dans l'autre ?

Re: Problème d'envoi de mail

Posté : 08 juin 2015, 19:03
par saji
Oui cela correspond à cette partie du code : aux champs nom email et message.

Code : Tout sélectionner

if(empty($nom)){ $valid=false; $erreurnom="Vous n'avez pas rempli votre nom"; } if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){ $valid=false; $erreuremail="Votre email n'est pas valide"; } if(empty($email)){ $valid=false; $erreuremail="Vous n'avez pas rempli votre email"; } if(empty($message)){ $valid = false; $erreurmessage="Vous n'avez pas rempli votre message";
Oui cela correspond à cette partie du code

Re: Problème d'envoi de mail

Posté : 09 juin 2015, 16:11
par Ryle
Bonjour,

Tu obtiens le message de succès car la fonction mail() transmet bien les données au serveur smtp (que les données soient complètent ou non). Pour avoir le message "Une erreur est survenue ..." il faudrait que la fonction mail() rencontre une erreur ce qui n'est semble-t-il pas le cas.

Il te manque vraisemblablement un test pour savoir si ta variable $valid est égale à false, auquel cas tu ne dois pas faire appel à la fonction mail. Mais sans le code c'est difficile à diagnostiquer...

Re: Problème d'envoi de mail

Posté : 09 juin 2015, 18:39
par saji
Voila le code complet.

Code : Tout sélectionner

<?php if(!empty($_POST)){ extract($_POST); $valid = true; if(empty($nom)){ $valid=false; $erreurnom="vous n'avez pas rempli votre nom"; } if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){ $valid=false; $erreuremail="Votre email n'est pas valide"; } if(empty($email)){ $valid=false; $erreuremail="vous n'avez pas rempli votre email"; } if(empty($message)){ $valid = false; $erreurnom="vous n'avez pas rempli votre message"; } if($valid){ $destinataire="[email protected]"; $sujet=$nom."Nom de la personne"; $message = "Nom : ".$_POST['nom']."\r\n"; $message .= "Adresse email : ".$_POST['email']."\r\n"; $message .= "Message : ".$_POST['message']."\r\n"; $entete = 'From: '.$_POST['email']."\r\n". 'Reply-To: '.$_POST['email']."\r\n". 'X-Mailer: PHP/'.phpversion(); } if(mail($destinataire,$sujet,$message,$entete)){ $erreur= "votre message nous ai bien parvenu"; unset($nom); unset($email); unset($message); } else{ $erreur="Une erreur est survenue et votre mail n'est pas parti "; } } ?>

Re: Problème d'envoi de mail

Posté : 09 juin 2015, 20:23
par tof73
donc que ce soit valide ou non, tu envoies l'email, dans un cas avec des valeurs non définies, dans l'autre, avec les bonnes valeurs.

Re: Problème d'envoi de mail

Posté : 09 juin 2015, 21:37
par saji
Le mail me parvient uniquement lorsque tous les champs sont remplis. Par contre l'affichage "votre message nous ai bien parvenu" s'affiche a tous les coups.

Re: Problème d'envoi de mail

Posté : 10 juin 2015, 09:02
par Ryle
Ton if(mail(...)) devrait être inclus dans la structure du if($valid). En effet, il ne faut pas envoyer de mail si $valid est à false :)
Le else et le message d'erreur en revanche ne devraient pas être associés à l'envoi de mail, mais au $valid à false
if($valid){
      $destinataire="[email protected]";
      $sujet=$nom."Nom de la personne";
      $message = "Nom : ".$_POST['nom']."\r\n";
      $message .= "Adresse email : ".$_POST['email']."\r\n";
      $message .= "Message : ".$_POST['message']."\r\n";
      $entete = 'From: '.$_POST['email']."\r\n".
           'Reply-To: '.$_POST['email']."\r\n".
      'X-Mailer: PHP/'.phpversion();

      if(mail($destinataire,$sujet,$message,$entete)){
         $erreur= "votre message nous ai bien parvenu";
         unset($nom);
         unset($email);
         unset($message);
      }

}
else{
      $erreur="Une erreur est survenue et votre mail n'est pas parti ";
}
La fonction mail ne retourne d'erreur que si elle ne peut pas transmettre le mail au serveur SMTP, elle ne cherche pas à savoir si le mail a bien été envoyé et reçu ou non... ;)

Ps : "votre message nous EST bien parvenu" ;)

Re: Problème d'envoi de mail

Posté : 10 juin 2015, 14:07
par saji
Merci encore une fois à vous.

Sujet résolu