Problème accent ©Ã©Ã© à à à formulaire php

Fermé
nemoeduc Messages postés 2 Date d'inscription mardi 31 mai 2016 Statut Membre Dernière intervention 1 juin 2016 - Modifié par baladur13 le 31/05/2016 à 23:32
nemoeduc Messages postés 2 Date d'inscription mardi 31 mai 2016 Statut Membre Dernière intervention 1 juin 2016 - 1 juin 2016 à 01:23
À l'aide!!!!

Je sais que le problème est au niveau de l'encodage, UTF-8 ou iso-8859-2. Sur les pages HTML, je peut faire le changement. Mais dans le fichier php du formulaire, je ne comprends rien.
Le message reçu via gmail est parfaitement correcte mais via Outlook, tous les accents sont problématiques.
Est-il possible d'apporter une modification dans le formulaire php? Ajouter l'encodage iso par exemple?

Voici le code du fichier:

<?php

// Read the form values
$success = false;
$fname = isset( $_POST['fname'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['fname'] ) : "";
$lname = isset( $_POST['lname'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['lname'] ) : "";
$senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
$phone = isset( $_POST['phone'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['phone'] ) : "";
$category = isset( $_POST['category'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['category'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";

$mail_subject = 'Message envoyé par ' . $fname. $lname;

$body = 'Name: '. $fname . $lname . "\r\n";
$body .= 'Email: '. $senderEmail . "\r\n";
$body .= 'Phone: '. $phone . "\r\n";
$body .= 'Category: '. $category . "\r\n";
$body .= 'Message: ' . "\r\n" . $message;



// If all values exist, send the email
if ( $fname && $senderEmail && $message ) {
  $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
  $headers = "From: " . $fname . $lname . " <" . $senderEmail . ">";  
  $success = mail( $recipient, $mail_subject, $body, $headers );
  echo "<p class='success'>Votre message a été envoyé avec succès! Nous vous contacterons sous peu.</p>";
}

?>


Merci de votre aide!!!!

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
31 mai 2016 à 23:52
Bonjour

Tu peux utiliser un code comme celui-là :
function Envoi_Mail($to,$sujet,$message='') {
  // Creation de l'entete du mail a envoyer
  // --------------------------------------
 $from = 'idarkness.esy.es<site-web@idar****.esy.es>';
  $boundary = md5(uniqid(microtime(), TRUE));
  $headers = "From: $from\r\n"; // FROM ...
  //$headers .= "Cc: $cc\n"; //pour mettre un destinataire en copie 
  $headers .= 'Mime-Version: 1.0'."\r\n";
  $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
  $headers .= "\r\n";

  // Creation du message a envoyer
  // -----------------------------
  $msg  =
  '--' . $boundary . "\r\n" .
  'Content-type: text/html; charset=utf-8' . "\r\n\r\n
  <html>
   <body>      
    $message
   </body>
  </html>\r\n";

  // Envoi du mail
  // -------------
  return mail($to, $sujet, $msg, $headers);
 } 
  • en adaptant à tes besoins (pour le from par exemple...)

0
nemoeduc Messages postés 2 Date d'inscription mardi 31 mai 2016 Statut Membre Dernière intervention 1 juin 2016
1 juin 2016 à 01:23
Merci beaucoup!!!
Je vais essayer mais j'aurais certainement d'autres problèmes car j'utilise des script php déjà préfabriqué qui viennent avec un thème (template).

Ce que j'aurais aimez, si cela est faisable est juste de pouvoir intégrer à quelque part dans le formulaire le Content-type: text/html; charset=utf-8.

Dans le fichier php que j'utilise, il y a ceci:
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";

J'ai essayé d'ajouter le charset mais je ne connais pas la syntaxe du langage php. Donc message d'erreur pour l'envoi.

Je fais possiblement erreur. Il serait peut-être une meilleure idée d'utiliser un autre script php.

Merci encore!
0