[RESOLU] Mail() et charset

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Mail() et charset

[Résolu] Mail() et charset

par Reka » 11 avr. 2018, 23:07

J'ai revu mon code de fond en comble.
Je ne sais pas ce qui a provoqué le problème mais suite à ces corrections massives, j'ai désormais mes accents!

Merci beaucoup, c'est résolu...

Re: Mail() et charset

par Reka » 11 avr. 2018, 19:59

Bonjour @rthur.
Merci pour ta réponse rapide.

Je suis passée par Notepad++ pour les dernières modifs, l'encodage en "UTF-8 (Sans BOM)" était coché. J'ai testé en encodage UTF-8 tout court, le résultat reste inchangé.

J'ai rajouté le header que tu m'as indiqué au sommet du fichier, sous la déclaration des sessions, et puis poussé sur le clou trois fois au cas où ça lui permettrait mieux de s'enfoncer 8-|
ini_set('default_charset', 'utf-8');
header('Content-Type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
Avec ces modifications, les accents ne passent toujours pas.
J'ai exporté mon projet sur un autre FTP chez un autre hébergeur, j'ai le même souci...

Mais si mes accents sont correctement interprétés en faisant un die(var_dump($message)), est-il normal que je trébuche dès lors que mes variables sont avalées et recrachées par la fonction mail() ?
Est-il possible que le mbstring ne soit pas actif dans le php.ini ou encore le AddDefaultCharset UTF-8 dans le fichier Apache alors que mes hébergeurs testés sont tous deux francophones (français et suisse) ?! :-s

Vais-je devoir être obligée de passer par PHPMailer pour corriger le tir (malgré les failles qu'on lui a trouvées il y a 2-3 ans ?). J'ai rencontré le même souci il y a 2 ans avec une autre application, et ça avait été ma seule solution pour faire face au problème, mais c'est fou qu'il faille passer par une usine à gaz pour un petit mail... non ? :cry:

Re: Mail() et charset

par @rthur » 11 avr. 2018, 19:00

Bonjour,

Vérifie que ton éditeur de code soit bien en UTF8.
Vérifie que ton serveur serve bien les pages en utf8, si ce n'est pas le cas et si tu n'as pas la main pour faire la modif, le plus simple est d'ajouter au début de tes pages PHP un header() pour forcer l'utf8 :
header('Content-Type: text/html; charset=utf-8');

...et la solution en dernier recours, mais qu'il faudrait éviter (mais qu'on utilise tous pour ne pas perdre de temps), c'est de donner un coup de utf8_decode() ou utf8_encode() sur les variables que tu reçois.
Mais vraiment, essaye d'abord les 2 trucs précédents.

Mail() et charset

par Reka » 11 avr. 2018, 16:04

Bonjour à tous,

Les mails qui me proviennent via un formulaire de contact ont des problèmes d'encodage...

$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $from . "\r\n";
$headers .= "CC:".$from."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

if( mail( $destinataire, $objet, $message, $headers)) { 
     // alert ok  
} else {
     // alert error 
}

Les mails que je réceptionne se présentent mal malgré l'UTF-8 renseignée :
=> exemple : Bonjour Plüm, je vous écris ce message...

J'ai tenté aussi de remplacer le charset par l'iso-8859-1 qui, de l'avis de certains, est mieux interprété par les messageries que l'UTF-8, mais le souci reste inchangé.

Avez-vous une idée du souci ?
D'avance, un grand merci pour votre aide.

Reka