Lorsque j'envoie le courrier électronique, celui-ci ne montre pas les caractères autres que l'anglais. Il montre comme ci-dessous:
ä½ ™ ç ”ä" ä "
Peut savoir réellement quelle cause cela? Même si j’ai essayé d’ajouter Content-type et charset dans le script, cela reste identique.
J'ai utilisé Mail::Factory("mail");
Vous pouvez ajouter un en-tête "Content-Type: text/html; charset = UTF-8" dans le corps du message.
$headers = "Content-Type: text/html; charset=UTF-8";
Si vous utilisez la fonction native mail()
fonction $ tableau d'en-têtes sera le 4ème paramètre mail($to, $subject, $message, $headers)
Si vous utilisez le code utilisateur PEAR Mail :: factory ()):
$smtp = Mail::factory('smtp', $params);
$mail = $smtp->send($to, $headers, $body);
J'utilise plutôt un jeu de caractères spécifié (ISO-8859-2) car tous les systèmes de messagerie (par exemple: http://10minutemail.com ) ne peuvent pas lire les messages UTF-8. Si vous en avez besoin:
function utf8_to_latin2($str)
{
return iconv ( 'utf-8', 'ISO-8859-2' , $str );
}
function my_mail($to,$s,$text,$form, $reply)
{
mail($to,utf8_to_latin2($s),utf8_to_latin2($text),
"From: $form\r\n".
"Reply-To: $reply\r\n".
"X-Mailer: PHP/" . phpversion());
}
J'ai créé une autre fonction de publipostage, car Apple le périphérique n'a pas bien lu la version précédente.
function utf8mail($to,$s,$body,$from_name="x",$from_a = "[email protected]", $reply="[email protected]")
{
$s= "=?utf-8?b?".base64_encode($s)."?=";
$headers = "MIME-Version: 1.0\r\n";
$headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">\r\n";
$headers.= "Content-Type: text/plain;charset=utf-8\r\n";
$headers.= "Reply-To: $reply\r\n";
$headers.= "X-Mailer: PHP/" . phpversion();
mail($to, $s, $body, $headers);
}