le 13/10/2009 à 23:09
missloo
bonjour
j'ai crée un fichier php qui renvoi un mail automatique a l'utilisateur.
il est formaté en html.
j'ai un problème avec l'encodage des caractère spéciaux.
j'ai compris que le problème venait du choix du charset.
j'ai donc changer
$message .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
par
$message .= "Content-Type: text/html; charset=\"utf-8\"\n";
ce qui a résolu le problème pour mon texte mais pas pour le texte qui s'affiche dynamiquement par le biais de variable
pour plus de compréhension voici mon code php
voici le mail reçu avec le ç noté �
Madame Delaville fran�oise,
Veuillez trouvez ci-joint le bon de réduction à valoir sur votre premier rendez vous.
Il est valable sur l'ensemble de la gamme Passdouceur
Alors n'attendez plus
Prenez rendez-vous dés à présent au 06 00 00 00 00
@+
quelle solution pour que tout soit affiché correctement
merci de vos réponses
j'ai crée un fichier php qui renvoi un mail automatique a l'utilisateur.
il est formaté en html.
j'ai un problème avec l'encodage des caractère spéciaux.
j'ai compris que le problème venait du choix du charset.
j'ai donc changer
$message .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n";
par
$message .= "Content-Type: text/html; charset=\"utf-8\"\n";
ce qui a résolu le problème pour mon texte mais pas pour le texte qui s'affiche dynamiquement par le biais de variable
pour plus de compréhension voici mon code php
<?php
// on génère une frontière
$boundary = '-----=' . md5( uniqid ( rand() ) );
// on génère un identifiant aléatoire pour le fichier
$file_id = md5( uniqid ( rand() ) ) . $_SERVER['SERVER_NAME'];
// on va maintenant lire le fichier et l'encoder
$path = 'bonbienvenu.jpg'; // chemin vers le fichier
$fp = fopen($path, 'rb');
$content = fread($fp, filesize($path));
fclose($fp);
$content_encode = chunk_split(base64_encode($content));
$headers = "From: \"Passdouceur\"<totot@mdr.com>\n";
$headers .= "X-Priority: 1\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/related; boundary=\"$boundary\"";
$sujet = "Offre découverte PASSDOUCEUR ";
$message = 'This is a multi-part message in MIME format.'."\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: text/html; charset=\"utf-8\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= "<html><body>Madame ".$nom." ".$prenom.", <br><br>";
$message .= "Veuillez trouvez ci-joint le bon de réduction à valoir sur votre premier rendez vous.<br>";
$message .= "Il est valable sur l'ensemble de la gamme Passdouceur<br>";
$message .= "Alors n'attendez plus <br>";
$message .= "Prenez rendez-vous dés à présent au 06 00 00 00 00 <br>";
$message .= "<br>@+<br><br>";
$message .= "<img src=\"cid:$file_id\" alt=\"le fichier demandé\"><br>";
$message .= "\n\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-Type: image/jpg; name=\"bonbienvenu.jpg\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-ID: <$file_id>\n\n";
$message .= $content_encode . "\n";
$message .= "\n\n";
$message .= "--" . $boundary . "--\n";
mail($mail , $sujet , $message, $headers);
?>
voici le mail reçu avec le ç noté �
Madame Delaville fran�oise,
Veuillez trouvez ci-joint le bon de réduction à valoir sur votre premier rendez vous.
Il est valable sur l'ensemble de la gamme Passdouceur
Alors n'attendez plus
Prenez rendez-vous dés à présent au 06 00 00 00 00
@+
quelle solution pour que tout soit affiché correctement
merci de vos réponses