Я пытаюсь отправить многопользовательскую/альтернативную электронную почту MIME через PHP-скрипт ... все работает нормально, но у меня есть некоторые проблемы с кодировкой! Акцентированные символы в теле письма отображаются неверно в почтовом клиенте! Как закодировать тело для решения этой проблемы? ... Я пытался использовать ..multipart mail - проблемы с акцентуациями
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() должна применяться только к информационным переменным papal, на самом деле я пытаюсь кодировать в utf8 $ txt_body ... переменные paypal кодируются 2 раза в utf8. Другими словами, я сделал, что:
$txt_body = utf8_encode(file_get_contents(...));
$html_body = utf8_encode(file_get_contents(...));
и чем в $ txt_body и $ html_body Я заменил информация, полученные через СПИ!
Спасибо ererybody!
Почему вы используете 'multipart/alternative', когда нет альтернативы? Почему вы не используете просто «multipart/mixed»? – Gumbo
Да, вы правы! – BitDrink
Вы попробовали кодировку * quoted-printable * или * base64 * transfer? – Gumbo