Есть следующий код, до этого проработавший 4 месяца нормально, но что то произошло и он перестал отдавать нормально русские буквы а вместо них либо знаки вопроса либо кракозябры. Целый день бьюсь и понять не могу в чем дело. Уже пробовал и сохранять сам скрипт и в utf-8 и в ANSI но не помогает, может быть не тем пробую сохранить? Сохраняю редактором Unired и RJ TextEd. Код (Text): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <?php // Получатели $to = 'admin@site.ru'; // Тема письма $subject = "ТЕМА письма klaskdlkasd"; // Тело письма $message = " <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <html> <head> <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\"> </head> текст на русском english text <html>"; // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset="utf-8"' . "\r\n"; $headers .= 'Content-Transfer-Encoding: 8bit'. "\r\n"; // Additional headers $headers .= 'To: admin@site.ru' . "\r\n"; $headers .= 'From: <admin@site.ru>' . "\r\n"; // Mail it mail($to, $subject, $message, $headers); ?> </html> Вдруг у меня глаз замылился и не вижу чего то самого явного...
Попробовал так. // Mail it mb_language('uni'); mb_send_mail($to, $subject, $message, $headers); кавычки из utf-8 убрал... Все тоже самое, ничего не изменилось. Все таки я склоняюсь к тому что код который я написал неправильно сохраняется в кодировке utf. Как то можно убедиться что все нормально? Или может кто у себя попробует запустить этот код, и скажите как приходит почта...
Попробуйте так: PHP: <?php header('Content-Type: text/html; charset=utf-8'); mb_internal_encoding('UTF-8'); // Установка кодировки // Получатели $to = [email='admin@site.ru]'admin@site.ru[/email]'; // Тема письма $subject = "ТЕМА письма klaskdlkasd"; $subject = mb_encode_mimeheader($subject, "UTF-8", "Q"); // Тело письма $message = " <b>текст на русском</b> <font color=red>english text</font> "; // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $headers .= 'From: <admin@site.ru>'; mail($to, $subject, $message, $headers); ?> Сам скрипт должен быть в UTF-8 без BOM.
Огромное спасибо все заработало!!! Только оставил прежний вариант строчки Код (Text): $subject = "русский буквы"; иначе в теме кракозябры приходили.