При использовании функции sendmail в php возникают проблемы с кодировкой

интернет программирование php кодировка

При просмотре письма из браузера на gmail и mail.ru некорректно отображаются заголовки, а в outlook заголовки отображаются правильно, но текст письма нечитаем. Пробовал ставить charset как в примере, а также добавлять encoding-type в заголовок не помогло. Подскажите, пожалуйста, как исправить.


// Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset: cp-1251' . "\r\n";
// Откуда пришло
$headers .= 'From: Сайт' . "\r\n";

//Здесь укажите электронный адрес, куда будут уходить сообщения
$mailto = $email;
$subject = "Подтверждение регистарции на сайте";

$message = 'Для активации аккаунта пройдите по следующей ссылке <a href="http://cadmy.ru/registration/registration.php?
activation='.$uniq_id.'" target="_blank">http://cadmy.ru/registration/registration.php?activation='.$uniq_id.'</a>';
$message .= ' или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.';
//Отправляем сообщение

//Отправляем сообщение
if(sendmail($mailto,$subject, $message ,$headers) !== FALSE) {...}
Ответы:
> $headers .= 'From: Сайт' . "\r\n";
В заголовках могут находиться только ASCII-симолы, поэтому русский текст там специально кодируется.
Замените на $headers .= '=?windows-1251?B?'.base64_encode('Сайт').'?=';
Проблемы не в PHP, а в том, что вы неправильно письмо формируете.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.