Antho03 | Bonjour,
J'ai réalisé un formulaire de contact pour mon site. Il fonctionne correctement, le mail est bien envoyé mais à la réception dans mon client de messagerie, les caractères spéciaux tels que "à", "é" sont remplacés par "é" ou encore Ã". Quel est le bout de code à rajouter pour encoder correctement le mail de mon formulaire ?
voici mon code :
Code :
- <?php
- /*
- ********************************************************************************************
- CONFIGURATION
- ********************************************************************************************
- */
- // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
- $destinataire = 'nom@fai.com';
- // Action du formulaire (si votre page a des paramètres dans l'URL)
- // si cette page est index.php?page=contact alors mettez index.php?page=contact
- // sinon, laissez vide
- $form_action = '';
- // Messages de confirmation du mail
- $message_envoye = "Votre message a bien été envoyé";
- $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
- // Message d'erreur du formulaire
- $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
- /*
- ********************************************************************************************
- FIN DE LA CONFIGURATION
- ********************************************************************************************
- */
- /*
- * cette fonction sert à nettoyer et enregistrer un texte
- */
- function Rec($text)
- {
- $text = trim($text); // delete white spaces after & before text
- if (1 === get_magic_quotes_gpc())
- {
- $stripslashes = create_function('$txt', 'return stripslashes($txt);');
- }
- else
- {
- $stripslashes = create_function('$txt', 'return $txt;');
- }
- // magic quotes ?
- $text = $stripslashes($text);
- $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
- $text = nl2br($text);
- return $text;
- };
- /*
- * Cette fonction sert à vérifier la syntaxe d'un email
- */
- function IsEmail($email)
- {
- $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
- return (eregi($pattern,$email)) ? true : false;
- };
- $err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
- // si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
- $civilite = (isset($_POST['civilite'])) ? Rec($_POST['civilite']) : '';
- $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
- $prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
- $email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
- $telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
- $lieu = (isset($_POST['lieu'])) ? Rec($_POST['lieu']) : '';
- $secteur = (isset($_POST['secteur'])) ? Rec($_POST['secteur']) : '';
- $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
- $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
- if (isset($_POST['envoi']))
- {
- // On va vérifier les variables et l'email ...
- $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
- $err_formulaire = (IsEmail($email)) ? false : true;
- if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
- {
- // les 4 variables sont remplies, on génère puis envoie le mail
- $headers = 'From: '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n";
- $contenu = "Civilité : ".stripslashes($civilite)."\n\n";
- $contenu .= "Nom : ".stripslashes($nom)."\n\n";
- $contenu .= "Prénom : ".stripslashes($prenom) ."\n\n";
- $contenu .= "Téléphone : ".stripslashes($telephone) ."\n\n";
- $contenu .= "Lieu d'implantation géographique : ".stripslashes($lieu) ."\n\n\n";
- $contenu .= "Message :"."\n\n".stripslashes( $message);
- $cible = $destinataire;
- // Remplacement de certains caractères spéciaux
- $contenu = html_entity_decode($contenu);
- $contenu = str_replace(''',"'",$contenu);
- $contenu = str_replace('’',"'",$contenu);
- $contenu = str_replace('<br>','',$contenu);
- $contenu = str_replace('<br />','',$contenu);
- // Envoi du mail
- if (mail($cible, $objet, $contenu, $headers))
- {
- echo '<p>'.$message_envoye.'</p>'."\n";
- }
- else
- {
- echo '<p>'.$message_non_envoye.'</p>'."\n\n\n";
- echo "<a href='http://www.entreprendre.midipyrenees.fr/spip.php?auteur1003'>Retourner au formulaire de contact</a>";
- };
- }
- else
- {
- // une des 3 variables (ou plus) est vide ...
- echo '<p>'.$message_formulaire_invalide.' <a href="contact.php">Retour au formulaire</a></p>'."\n";
- $err_formulaire = true;
- };
- }; // fin du if (!isset($_POST['envoi']))
- if (($err_formulaire) || (!isset($_POST['envoi'])))
- {
- // afficher le formulaire
- echo '<form style="padding: 5px 5px 5px 5px;" id="contact" method="post" action="'.$form_action.'">'."\n";
- echo ' <fieldset><legend>Vos coordonnées</legend>'."\n";
- echo ' <p>'."\n";
- echo ' <label for="civilite">Civilité :</label>'."\n";
- echo ' <select id="civilite" name="civilite" value="'.stripslashes($civilite).'" tabindex="1" />
- <option selected="selected">M.</option>
- <option>Mme</option>
- <option>Melle</option>
- </select>'."\n";
- echo ' </p>'."\n";
- echo ' <p>'."\n";
- echo ' <label for="nom">Nom :</label>'."\n";
- echo ' <input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="2" />'."\n";
- echo ' </p>'."\n";
- echo ' <p>'."\n";
- echo ' <label for="prenom">Prénom :</label>'."\n";
- echo ' <input type="text" id="prenom" name="prenom" value="'.stripslashes($prenom).'" tabindex="3" />'."\n";
- echo ' </p>'."\n";
- echo ' <p>'."\n";
- echo ' <label for="email">Email :</label>'."\n";
- echo ' <input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="4" />'."\n";
- echo ' </p>'."\n";
- echo ' <p>'."\n";
- echo ' <label for="telephone">Téléphone :</label>'."\n";
- echo ' <input type="text" id="telephone" name="telephone" value="'.stripslashes($telephone).'" tabindex="5" />'."\n";
- echo ' </p>'."\n";
- echo ' <p>'."\n";
- echo ' <label for="lieu">Lieu d\'implantation géographique :</label>'."\n";
- echo ' <input type="text" id="lieu" name="lieu" value="'.stripslashes($lieu).'" tabindex="6" />'."\n";
- echo ' </p>'."\n";
- echo ' <label for="secteur">Secteur d\'activité :</label>'."\n";
- echo ' <select id="secteur" name="secteur" value="'.stripslashes($secteur).'" tabindex="7" />
- <option selected="selected">Textile</option>
- <option>Batiment</option>
- <option>TIC</option>
- </select>'."\n";
- echo ' </p>'."\n";
- echo ' </fieldset>'."\n";
- echo ' <fieldset><legend>Votre message :</legend>'."\n";
- echo ' <p>'."\n";
- echo ' <label for="objet">Objet :</label>'."\n";
- echo ' <input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="8" />'."\n";
- echo ' </p>'."\n";
- echo ' <p>'."\n";
- echo ' <label style="float:left; padding-right:4px" for="message">Message :</label>'."\n";
- echo ' <textarea id="message" name="message" tabindex="9" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
- echo ' </p>'."\n";
- echo ' </fieldset>'."\n";
- echo ' <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>'."\n";
- echo '</form>'."\n";
- };
- ?>
|
J'ai essayé avec htmlentities et écumé plusieurs forums, je n'ai rien trouvé... Je débute en PHP et je m'y casse les dents là.
D'avance merci pour votre réponse |