Pt'it probléme d'envoi de mail

Eléphant du PHP | 169 Messages

27 oct. 2008, 12:02

Slt tout le monde !

Je suis entrain de mettre un place un formulaire de contact ou les donnée seront envoyé par mail.
Mais je rencontre un pt'it problème, le mail n'arrive jamais.

J'ai surement une erreur dans mon code, mais je ne la vois pas !! :roll:
Pourriez-vous y jeter un coup d'œil et me dire si vous trouvé une erreur.

A savoir que sur ce formulaire, j'ai 9 champs donc 5 obligatoires (civilite, nom, prenom, objet et texte)
<?php
/* Initialisation des variables */
$from = "[email protected]"; // l'expéditeur : remplacer ici domaine.com par votre domaine
$to = "[email protected]"; // le destinataire : mettez ici votre adresse mail

/* Récupération des champs */
if (!empty($_POST['civilite'])) {$civilite = $_POST['civilite'] ;}
if ($civilite && !empty($_POST['nom'])) {$nom = $_POST['nom'] ;}
$service = $_POST['service'];
$telphone = $_POST['phone'];
$fax = $_POST['fax'];
if ($civilite && $nom && !empty($_POST['email'])) {$email = $_POST['email'];}
if ($civilite && $nom && email && !empty($_POST['objet'])) {$objet = $_POST['objet'] ;}
if ($civilite && $nom && email && $objet && !empty($_POST['texte'])) {$texte = $_POST['texte'] ;}

if ($civilite && $nom && $email && $objet && $texte)
{
 
  /* En-têtes obligatoires du message */
  $headers = "From: Webmaster <$from>\n";
  $headers .= "To: Contact <$to>\n";
  $headers .= "MIME-Version: 1.0\n";
  $headers .= "Content-type: text/html; charset=utf-8\n"; 
 
 /* Préparation */
	$subject = "Demande de renseignement"; // le sujet du mail
	$email = NULL;
	$message = $_POST['civilite'].' <strong>Nom:</strong> '.$_POST['nom'].'<br />\n';
	$message .= '<strong>Email:</strong> <a href="mailto:'.$_POST['email'].'">'.$_POST['email'].'\n';
	
	$message .= '<strong>Société:</strong> '.$_POST['societe'].'<br />\n';
	$message .= '<strong>Service:</strong> '.$_POST['service'].'<br />\n';
	$message .= '<strong>Téléphone:</strong> '.$_POST['phone'].'<br />\n';
	$message .= '<strong>Fax:</strong> '.$_POST['fax'].'<br /><br />\n';
	
	
	$message .= '<strong>Objet:</strong> '.$_POST['objet'].'<br />\n';
	$message .= '<strong>Message:</strong> '.htmlentities($_POST['texte']).'<br /><br />\n';
	
	$message .= "<small>Ce message à été envoyé par le biais du site</small> \n";
 
   //Appel a la fonction mail 
  if (!mail($to, $subject, $message, $headers))
  	{
     echo "Erreur: Impossible d'envoyer le mail <br /> retour";
  	} 
	else { ?> MISE EN PAGE HTML <?php }
} 
else { ?> MISE EN PAGE HTML <?php }  ?>
Merci a vous
--
Kweb

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 oct. 2008, 12:12

Bonjour,

Crée une nouvelle page et met dedans juste cela:
<?php
mail("[email protected]", "Test", "Message de test");
?>
Si tu ne reçois pas cet e-mail:
1) vérifies dans tes spams
2) testes sur une ou deux autres adresses e-mail (de fournisseurs de mail différents de préférence)
3) contacte ton hébergeur

Si tu reçois bien le mail de test, c'est que ton script est défaillant, par conséquent, repars de la version qui marche et teste progressivement les ajouts de ton code pour trouver d'où vient le problème.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 169 Messages

27 oct. 2008, 13:17

Ok, effectivement ca fonctionne bien... fonc je vais reprendre de 0

@+
--
Kweb

Eléphant du PHP | 422 Messages

28 oct. 2008, 09:51

Cela n'a rien à voir avec ton problème, mais prends l'habitude de ne pas faire du méli-mélo HTML et PHP : un coup mettre du HTML dans du PHP, puis du PHP dans du HTML, ... Là, ton code est relativement simple, mais dès que ça va se compliquer tu devras te demander : "à quel if ou quel while correspond le "<?php } ?>" ?

Un truc style
else { ?> MISE EN PAGE HTML <?php } 
pourra avantageusement être remplacé au niveau de la lisibilité par
else { echo 'MISE EN PAGE HTML'; }