Имеется скрипт формы обратной связи Secure PHP Form Mailer Script ( _dagondesign.com/articles/secure-php-form-mailer-script/ ) - все прекрасно, только вот уже неделю бьюсь с кодировками в заголовках (конкретно "name" и "subject". Автор, к сожалению, молчит.
Везде где можно выставлена UTF-8, но все неанглийские символы приходят в белиберде (судя по всему в ISO):
На примере поля subject: Тема ÑообÑениÑ
А должно быть: Тема сообщения
В сходном коде сообщения: Subject: =?UTF-8?Q?=C3=90=C2=A2=C3=90=C2=B5=C3=90=C2=BA=C3=91?= =?UTF-8?Q?=C2=81=C3=91=C2=82=20=C3=91=C2=81=C3=90=C2=BE=C3=90=C2=BE=C3=90?= =?UTF-8?Q?=C2=B1=C3=91=C2=89=C3=90=C2=B5=C3=90=C2=BD=C3=90=C2=B8=C3=91?= =?UTF-8?Q?=C2=8F?=
В скрипте применительно к проблемным загаловкам задано:
...
$sender_name = 'fm_name';
$sender_email = 'fm_email';
...
if (function_exists(mb_encode_mimeheader)) {
$email_subject = mb_encode_mimeheader($email_subject, 'UTF-8', 'Q', '');
$sender_name = mb_encode_mimeheader($sender_name, 'UTF-8', 'Q', '');
}
...
$headers .= 'From: ' . $sender_name . ' <' . $sender_email . '>' . PHP_EOL;
$headers .= $extra_recips;
$headers .= 'Reply-To: ' . $sender_name . ' <' . $sender_email . '>' . PHP_EOL;
$headers .= 'Return-Path: ' . $sender_name . ' <' . $sender_email . '>' . PHP_EOL;
$headers .= "Message-ID: <" . time() . "ddfm@" . $_SERVER['SERVER_NAME'] . ">" . PHP_EOL;
$headers .= 'X-Sender-IP: ' . $_SERVER["REMOTE_ADDR"] . PHP_EOL;
$headers .= "X-Mailer: PHP v" . phpversion() . PHP_EOL;
$headers .= 'MIME-Version: 1.0' . PHP_EOL;
// $headers .= 'Content-Type: multipart/related; boundary="' . $mime_boundary . '"'
...
Повторюсь, проблема только с заколовками - в теле письма все нормально. Проблема как на локальной машине (денвер), так и на хостинге (отсылал письма на gmail, яндекс + через outlook, thunderbird - везде одно и то же).
Помимо шаманства с самим скриптом пробовал жестко задавать utf-8 через .htaccess и напрямую через конфиг апача - 0 реакции.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.