LINUX.ORG.RU
решено ФорумAdmin

Кривая кодировка в теме письма, php, postfix.

 , ,


0

1

Разработчики сделали сайт, на котором есть несколько форм(окошек) для отправки писем. в рутовой директории сайта есть скрипт на PHP, который отправляет письмо.
После переноса сайта на мой web сервер письма стали доходить с аброй кодаброй в теме письма, в теле письма с кодировкой все было хорошо.

# php -v
PHP 5.2.6 (cli) (built: Aug 11 2008 09:10:26)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

# rpm -qa | grep postfix
postfix-2.3.3-2.1.el5_2

Разработчик php скрипта утверждает, что проблема с корявой кодировкой темы письма находится на моем веб сервере
Собственно и вопрос - действительно так и есть, ну или действительно такое может быть? В чем (может быть) проблема?

При тестовой отправке письма через 25 порт локалхоста с помощью телнет и указывания темы письма как

subject:=?UTF-8?B?0KLQldC80LAg0L/QuNGB0YzQvNCwINCyIFVURi04Cg==?= 
тема письма в почтовом клиенте отображается корректно.
Могу ли я утверждать в случае такого теста - что на моем хостинге проблемы нет или все таки проблема есть на моем хостинге?

★★★★

Последнее исправление: Vlad-76 (всего исправлений: 1)

Скажите, пожалуйста, как формируется в вашем скрите заголовок с темой сообщения? Просто видел не раз, как данные в cp1251 помещали в заголовок с =?UTF-8?, в результате чего заголовок сообщения отправленного скриптом отображался не корректно, при этом заголовок тестового сообщения отправленного из консоли отображался корректно. Судя по тому, что сообщение отправленное с помощью telnet пришло с корректной кодировкой темы сообщения, проблема в скрипте, или в кодировке текста темы сообщения, передаваемого скрипту.

lucentcode ★★★★★
()

и стем и с другим всё в порядке просто браузеры по ISO-шкам коверкают передачу.

anonymous
()

PHP 5.2.6

Как там дела в 2008 году?

Могу ли я утверждать в случае такого теста - что на моем хостинге проблемы нет

Удивительно, что у тебя вообще что-то работает.

no-such-file ★★★★★
()
Ответ на: комментарий от ilinsky

После моих рекомендаций разработчику вставить в скрипт строчку

$subject = "=?utf-8?B?" . base64_encode($subject) . "?=";
сообщения клиентами yandex,google,thunderbird отображаются корректно
Кусок кода при котором все хорошо(пока по крайней мере).
$type = $_POST['type']; //presentation, consultation, commercial, about
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];

include 'config.php';

$headers = 'From: noreply@ХХХХХ.ru' . "\r\n" .
    'Content-type: text/html; charset=utf-8';
if ($type == 'consultation') {
    $subject = 'Заказана консультация';
    $subject = "=?utf-8?B?" . base64_encode($subject) . "?=";

    $msg = <<<THIS
    <b>Имя:</b> $name <br>
    <b>Телефон:</b> $phone <br>
    <b>Email:</b> $email
THIS;
    mail($toEmail, $subject, $msg, $headers);
}

Разработчик сказал, что первоначальный вариант не работающего скрипта он не сохранил. Есть какой то промежуточный вариант(тоже не работающий), но сейчас его постить смысла нет. Хотя разработчик утверждал, что за 5 лет его первый вариант скрипта не заработал впервые после переноса на другую «площадку» хостинга.

Vlad-76 ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.