Palych_tw
@Palych_tw
Типа веб-разработчик

Кириллица в заголовке письма?

Господа! Прошу помощи, не могу побороть проблему. В веб-интерфейсах почты заголовки (от и тема) отображаются нормально(добился через iconv), а вот в некоторых почтовых клиентах в заголовках абракадабра.. текст письма доходит нормальный. Вот код
$mailTo = $_POST['email']; // кому
$from = 'Международная Бизнес Ассоциация <uba@gmail.com>'; // от кого
$subject = iconv('utf-8', 'windows-1251', "Вступление в Международную Бизнес Ассоциацию"); // тема письма
$message = "Добрый день! Вы отправили заполненную форму на вступление в Международную Бизнес Ассоциацию. Наш менеджер свяжется с Вами в ближайшее время. ";// текст письма
$r = sendMailAttachment($mailTo, $from, $subject, $message, $file); // отправка письма c вложением
$mailTo = 'uba@gmail.com'; // кому
$message = "С сайта была отправлена форма на вступление в ассоциацию."; // текст письма
$r = sendMailAttachment($mailTo, $from, $subject, $message, $file); // отправка письма c вложением

function sendMailAttachment($mailTo, $from, $subject, $message, $file = false){
    $separator = "---"; // разделитель в письме
    // Заголовки для письма
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "From: $from\nReply-To: uba@gmail.com\n"; // задаем от кого письмо
    $headers .= "Content-Type: multipart/mixed; boundary=\"$separator\""; // в заголовке указываем разделитель
    // если письмо с вложением
    if($file){
        $bodyMail = "--$separator\n"; // начало тела письма, выводим разделитель
        $bodyMail .= "Content-type: text/html; charset='utf-8'\n"; // кодировка письма
        $bodyMail .= "Content-Transfer-Encoding: quoted-printable"; // задаем конвертацию письма
        $bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n"; // задаем название файла
        $bodyMail .= $message."\n"; // добавляем текст письма
        $bodyMail .= "--$separator\n";
        $fileRead = fopen($file, "r"); // открываем файл
        $contentFile = fread($fileRead, filesize($file)); // считываем его до конца
        fclose($fileRead); // закрываем файл
        $bodyMail .= "Content-Type: application/octet-stream; name==?utf-8?B?".base64_encode(basename($file))."?=\n"; 
        $bodyMail .= "Content-Transfer-Encoding: base64\n"; // кодировка файла
        $bodyMail .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode(basename($file))."?=\n\n";
        $bodyMail .= chunk_split(base64_encode($contentFile))."\n"; // кодируем и прикрепляем файл
        $bodyMail .= "--".$separator ."--\n";
    // письмо без вложения
    }else{
        $bodyMail = $message;
    }
    $result = mail($mailTo, $subject, $bodyMail, iconv('utf-8', 'windows-1251', $headers)); // отправка письма
    return $result;
}

Вот без iconv
17991b89028b4c7888a8be4064b6e46b.png
  • Вопрос задан
  • 1494 просмотра
Пригласить эксперта
Ответы на вопрос 1
khipster
@khipster
$headers .= "Content-Type: multipart/mixed; charset=utf-8; boundary=\"$separator\"";
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы