J'essaie d'envoyer un courrier électronique MIME multipart/alternative via un script PHP ... tout fonctionne bien mais j'ai quelques problèmes avec l'encodage! Les caractères accentués, dans le corps de l'e-mail, sont affichés à tort dans le client de messagerie! Comment encoder le corps pour résoudre ce problème? ... J'ai essayé d'utiliser ..courrier multipart - problèmes d'accentuation
utf8_encode($body)
Sans de bons résultats!
Dans certains e-mails au format brut, j'ai remarqué que les accentuations sont remplacées par = XX (où XX est un caractère alphanumérique) ... Comment puis-je faire cela?
Merci d'avance!
Voici le code:
$header = "From: \n";
$header .= "Reply-To: \n";
$header .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n";
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";
$body .= "\n".wordwrap($txt_body, 70);
$body .= "\n\n--$alt_boundary\n";
$body .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";
$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Type: text/html; charset=utf-8\n";
$body .= "Content-Transfer-Encoding: 7bit\n";
$body .= "\n".wordwrap($html_body, 70);
$body .= "\n\n\n--$mixed_boundary\n";
$body .= "Content-Disposition: attachment filename=\"test file\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\test file\"\n";
$body .= "Content-Transfer-Encoding: 7bit\n";
$body .="\n$file";
$body .= "\n\n--$mixed_boundary--";
$body .= "\n\n--$alt_boundary--";
mail($to, $subject, $body, utf8_encode($header));
EDIT:
Le $txt_body
et $html_body
sont le contenu de deux fichiers:
$txt_body = file_get_contents(...);
$html_body = file_get_contents(...);
Dans ce fichiers, je remplaçons quelques informations que Je reçois de PayPal via IPN. J'ai remarqué que lorsque je reçois l'e-mail, seules les accentuations qui se produisent dans les infos IPN sont affichées à tort (en d'autres termes les informations supplémentaires que je remplace dans le contenu des fichiers)! Les autres caractères accentués sont affichés correctement !!
Comment puis-je résoudre ce problème?
SOLVED:
Je l'ai résolu le problème! La fonction utf8_encode() ne doit être appliquée qu'aux variables info pontificales, en fait j'essaie d'encoder dans utf8 le $ txt_body ... les variables paypal sont encodées 2 fois dans utf8. En d'autres termes, je l'ai fait que:
$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));
et que dans txt_body de $ et html_body $ J'ai remplacé l'info reçue par IPN!
Merci à ererybody!
Pourquoi vous utilisez 'multipart/alternative' lorsqu'il n'y a pas d'alternative? Pourquoi n'utilisez-vous pas simplement 'multipart/mixed'? – Gumbo
Oui, vous avez raison! – BitDrink
Avez-vous essayé un encodage de transfert * quoted-printable * ou * base64 *? – Gumbo