Я пытаюсь отправить многочастное / альтернативное письмо MIME через PHP-скрипт ... все работает нормально, но у меня есть некоторые проблемы с кодировкой! Подчеркнутые символы в теле письма неправильно отображаются в почтовом клиенте! Как можно кодировать тело, чтобы решить эту проблему? ...
Я пытался использовать ..
utf8_encode($body)
Без хороших результатов!
В некоторых сообщениях в необработанном формате я заметил, что акцентуации заменены на = XX (где XX - буквенно-цифровой символ) ... Как я могу это сделать?
Заранее спасибо!
Это код:
$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:
$txt_body
и $html_body
являются содержимым двух файлов:
$txt_body = file_get_contents(...);
$html_body = file_get_contents(...);
В этих файлах я заменяю некоторую информацию, полученную от PayPal через IPN. Я заметил, что когда я получаю электронное письмо, неправильно отображаются только те акценты, которые возникают в информации IPN (другими словами, дополнительная информация, которую я заменяю в содержимом файлов)! Другие подчеркнутые символы отображаются правильно !!
Как мне это решить?
РЕШИТЬ:
Я решил проблему! Функция utf8_encode () должна применяться только к папским информационным переменным, фактически я пытаюсь кодировать в utf8 $ txt_body ... переменные PayPal кодируются 2 раза в utf8. Другими словами, я сделал это:
$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));
а затем в $ txt_body и $ html_body я заменил информацию, полученную через IPN!
Спасибо всем!