[résolu] Problème d'affichage dans email envoyé via un formulaire.

Problème d'affichage dans email envoyé via un formulaire. [résolu] - PHP - Programmation

Marsh Posté le 02-12-2005 à 17:07:30    

Salut à tous  :hello:  
 
J'ai créer un script PHP pour envoyer un email via un formulaire.
 
Le script fonctionne parfaitement, mais j'ai quand même un soucis d'affichage au niveau du destinataire, de l'expéditeur et du sujet du message.
 
En effet mes pages et ma base de données sont en UTF-8, et lorsque le destinataire (ou l'expéditeur, ou le sujet) contient un caractère spécial du genre "é" cela s'affiche comme çà : é (exemple : Véronique s'écrira Véronique).
 
Pour le message, j'ai trouvé (en cherchant sur le web) une parade en rajoutant :

Code :
  1. // Type MIME
  2. $entete .= "Content-Type: text/plain; charset=UTF-8\r\n";
  3. // Encodage
  4. $entete .= "Content-Transfer-Encoding: 8bit\r\n";


 
Pour l'instant la seule solution que j'ai trouvé consiste à remplacer "é" par "e" grâce à la fonction str_replace(), mais j'avoue qu'elle ne me satisfait pas et en plus je ne sais pas comment remplacer plusieurs caractères.
 
Voici le code qui me permet d'envoyer le mail :

Code :
  1. <?php
  2. // variables
  3. $prenom = $_POST['dest_prenom'];
  4. $nom = $_POST['dest_nom'];
  5. $email = $_POST['dest_email'];
  6. $prenom_expediteur = $_POST['exp_prenom'];
  7. $nom_expediteur = $_POST['exp_nom'];
  8. $email_expediteur = $_POST['exp_mail'];
  9. $sujet_expediteur = $_POST['sujet'];
  10. $message_expediteur = $_POST['contenu'];
  11. // Adresse du destinataire
  12. $destinataire = str_replace("é","e","$prenom $nom <$email>" );
  13. // Sujet du mail
  14. $sujet = "$sujet_expediteur";
  15. // Adresse de l'expediteur
  16. $entete = "From: $prenom_expediteur $nom_expediteur <$email_expediteur>\r\n";
  17. // Type MIME
  18. $entete .= "Content-Type: text/plain; charset=UTF-8\r\n";
  19. // Encodage
  20. $entete .= "Content-Transfer-Encoding: 8bit\r\n";
  21. // Message
  22. $message = "$message_expediteur";
  23. // Fonction mail()
  24. mail($destinataire, $sujet, $message, $entete);
  25. ?>


 
Pouvez-vous m'aider ?
 
Merci d'avance.
 
 [:fafane84]


Message édité par fafane84 le 04-12-2005 à 00:06:38

---------------
Mon Topic de Vente Hardware
Reply

Marsh Posté le 02-12-2005 à 17:07:30   

Reply

Marsh Posté le 02-12-2005 à 19:35:57    

Est-ce que cela marcherait en remplaçant la ligne 18 par :

$entete .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

Reply

Marsh Posté le 03-12-2005 à 17:16:39    

olivthill a écrit :

Est-ce que cela marcherait en remplaçant la ligne 18 par :

$entete .= "Content-Type: text/html; charset=ISO-8859-1\r\n";



Non le charset était comme çà sur le tuto que j'ai trouvé sur Internet, il m'a fallut le modifier en UTF-8 pour que la partie "message" reconnaisse correctement les caractères spéciaux.
 
Merci tout de même de ta réponse  [:b-rabbit]  
 
Une autre idée ?
 
A savoir que mon script fait appel à une table de ma base de donnée qui malgrés le fait que l'interclassement soit "utf8_general_ci" tous les carectères "é" s'affichent "é"


---------------
Mon Topic de Vente Hardware
Reply

Marsh Posté le 04-12-2005 à 00:06:03    

Ne cherchez plus, je crois avoir trouvé l'explication.
 
Cela doit venir tout simplement de ma boite "en ligne" qui ne doit pas gérer le UTF-8.
 
En effet, lorsque je consulte mes messages "en ligne" le problème d'affichage se produit, mais quand je charge les mêmes messages sur ma messagerie (Outlook Express) tous les caractères spéciaux sont correctement affichés.
 
 [:fafane84]


---------------
Mon Topic de Vente Hardware
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed