Функция mail(): трудности с кодировкой

Рейтинг: 3Ответов: 1Опубликовано: 18.09.2014

Всем доброго времени!
Когда все было в windows-1251, все работало нормально. Иероглифы в письме появились, после того как перевел все на utf-8.
Коды скриптов в utf-8, в html head meta http-equiv="Content-Type" content="text/html; charset=utf-8".
Похожие темы гуглил, ничего пока не помогло. Использовать в поле From латиницу не предлагать, т.к. нужна кириллица.
Когда письмо приходит на почту, то в общем списке писем, в поле от кого, кириллица отображается корректно. Когда заходишь в само письмо, тот же текст в поле от кого, корректно отображаются только латинские буквы и e-mail отправителя, кириллица выводится иероглифами. Жирным выделено то, что смущает, в общем списке все нормально, значит, я отправляю все правильно, но почему в самом письме все меняется?
Также пробовал варианты:

'subject' = '=?koi8-r?B?'.base64_encode(convert_cyr_string("Новое сообщение", "w","k")).'?=';  
'subject' = '=?utf-8?B?'.base64_encode(convert_cyr_string("Новое сообщение", "w","k")).'?=';  
'subject' = '=?koi8-r?B?'.base64_encode("Новое сообщение").'?=';  
'subject' = '=?utf-8?B?'.base64_encode("Новое сообщение").'?=';

На From никак не повлияло.

Код php:

<php

$mail = array(  
'to' => "tomail@site.ru",  
'subject' => "Новое сообщение",  
'message' => "<html><body><p>Текст сообщения</p></body></html>",  
'headers' => "MIME-Version: 1.0\r\n"."Content-type: text/html; charset=utf-8\r\n"."From: Эта кириллица выводится иероглифами <frommail@site.ru>\r\n");  
mail($mail['to'], $mail['subject'], $mail['message'], $mail['headers']);

Ответы

▲ 7

Спасибо Stuf, последний комментарий натолкнул на ответ.
Подстановки в subject никак не помогли, а вот конвертация только header все решила. Решил следующим образом:

<?php
    $mail = array(  
        'to' => "tomail@site.ru",  
        'subject' => "Новое сообщение",  
        'message' => "<html><body><p>Текст сообщения</p></body></html>",  
        'headers' => "MIME-Version: 1.0\r\n"."Content-type: text/html; charset=utf-8\r\n"."From: Эта кириллица выводится иероглифами <frommail@site.ru>\r\n");  

    mail($mail['to'], $mail['subject'], $mail['message'], iconv ('utf-8', 'windows-1251', $mail['headers']));