PHP отправка письма - в заголовке косячная кодировка
Имеется сайт на php на только что поставленный сервер.
Кодировка UTF-8.
Кусок кода:
Код:
$message = "Здравствуйте. Вы (кто-то другой) сделали запрос на восстановление пароля доступа к системе.
Ваш пароль: {Password}";
$message = str_replace( "{Password}", $password, $message );
mail( $user->Mail, "Восстановление пароля", $message,
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/plain; charset=utf-8 \r\n' .
'From: MASE <' . SERVICE_MAIL . '>\r\n' );
Ваш пароль: {Password}";
$message = str_replace( "{Password}", $password, $message );
mail( $user->Mail, "Восстановление пароля", $message,
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/plain; charset=utf-8 \r\n' .
'From: MASE <' . SERVICE_MAIL . '>\r\n' );
Отправляет письмо, письмо приходит:
Заголовок: ???????????╟???????╩?╣?????╣ ???╟?????╩??
Текст письма: нормальный. Кодировка письма тоже utf-8.
Т.е. косячится только тема сообщения.
Что с этим можно сделать?
Информация:
Почтовый SMTP-сервер - JAMES от Apache.
PHP 5.x
Apache 2.2
MySQL 5.x
Примечание: тут же висит сайт, сделанный на парсере лебедева в кодировке 1251 - письма ходят нормальные через тот же SMTP-сервер. Так что думается, что дело в PHP.
Попробуйте.
А если не заработает - стукните в аську - бум думать вместе
Дело не в php, уже проходили... Отправляй письма в KOI8-R (iconv) и должно быть всё нормально. Просто заголовки (subject) некоторые программы усилено пытаются читать только и KOI8-R, а при чтении "вспоминают", что есть другие кодировки)
Цитата: RussianSpy
а отправить самому себе письмо и посмотреть как сделано не судьба?
А я разве как-то по-другому делаю?
Цитата:
Дело не в php, уже проходили... Отправляй письма в KOI8-R (iconv) и должно быть всё нормально. Просто заголовки (subject) некоторые программы усилено пытаются читать только и KOI8-R, а при чтении "вспоминают", что есть другие кодировки)
Тут я проверял и в The Bat и в ThunderBird и в GMail. Уж Gmail-то всегда заголовки нормально принимал, а тут тоже нивкакую.
Кстати. То же самое, работающее на локальном хостинге или на мастерхосте - работает нормально. С кодировками все замечательно.
Так что, думаю, что проблема именно с сервером.
Перекодировать в КОИ8, это, конечно, выход. Но это не совсем правильно. Ведь сервер должен работать нормально, а не с заплатками.
Вот здесь мой файл php.ini : http://mkechinov.ru/_file/php.ini
Цитата:
From - Thu Jul 26 10:22:16 2007
X-Account-Key: account2
X-UIDL: 1185430858.55338.mx-14.masterhost.ru,S=1386
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <robot@5151.ru>
Delivered-To: [email]XX@XXXXXXX.ru[/email]
Received: (qmail 55327 invoked from network); 26 Jul 2007 06:20:53 -0000
Received: from unknown (HELO wearbear-h0hawf) (217.112.36.176)
by mx1.masterhost.ru with SMTP; 26 Jul 2007 06:20:44 -0000
Message-ID: <6507439.21185430836031.JavaMail.Administrator@wearbear-h0hawf>
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from 127.0.0.1 ([127.0.0.1])
by wearbear-h0hawf (JAMES SMTP Server 2.3.1) with SMTP ID 156
for <we@mj-project.ru>;
Wed, 25 Jul 2007 23:20:34 -0700 (PDT)
Date: Wed, 25 Jul 2007 23:20:34 -0700
Subject: ???????????А???????Л?Е?????Е ???А?????Л?? ?? ?????????Е???Е XXX
To: [email]me@mymail.ru[/email]
Content-type: text/plain; charset=utf-8
From: XXXXX <XXXXX@XXXXX.co.uk>
X-SpamTest-Envelope-From: [email]robot@XXXX.ru[/email]
X-SpamTest-Group-ID: 00000000
X-SpamTest-Info: Profiles 1284 [July 25 2007]
X-SpamTest-Info: helo_type=3
X-SpamTest-Info: {relay has no DNS name}
X-SpamTest-Method: none
X-SpamTest-Rate: 40
X-SpamTest-Status: Not detected
X-SpamTest-Status-Extended: not_detected
X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release
а�аДб�аАаВб�б�аВб�аЙб�аЕ.
а�б� (аКб�аО-б�аО аДб�б�аГаОаЙ) б�аДаЕаЛаАаЛаИ аЗаАаПб�аОб� аНаА аВаОб�б�б�аАаНаОаВаЛаЕаНаИаЕ аПаАб�аОаЛб� аДаОб�б�б�аПаА
аК б�аИб�б�аЕаМаЕ XXXXX.
а�аАб� аПаАб�аОаЛб�: XXXXX
аЁ б�аВаАаЖаЕаНаИаЕаМ, б�аЛб�аЖаБаА аПаОаДаДаЕб�аЖаКаИ аПб�аОаЕаКб�аА XXXX.
X-Account-Key: account2
X-UIDL: 1185430858.55338.mx-14.masterhost.ru,S=1386
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <robot@5151.ru>
Delivered-To: [email]XX@XXXXXXX.ru[/email]
Received: (qmail 55327 invoked from network); 26 Jul 2007 06:20:53 -0000
Received: from unknown (HELO wearbear-h0hawf) (217.112.36.176)
by mx1.masterhost.ru with SMTP; 26 Jul 2007 06:20:44 -0000
Message-ID: <6507439.21185430836031.JavaMail.Administrator@wearbear-h0hawf>
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Received: from 127.0.0.1 ([127.0.0.1])
by wearbear-h0hawf (JAMES SMTP Server 2.3.1) with SMTP ID 156
for <we@mj-project.ru>;
Wed, 25 Jul 2007 23:20:34 -0700 (PDT)
Date: Wed, 25 Jul 2007 23:20:34 -0700
Subject: ???????????А???????Л?Е?????Е ???А?????Л?? ?? ?????????Е???Е XXX
To: [email]me@mymail.ru[/email]
Content-type: text/plain; charset=utf-8
From: XXXXX <XXXXX@XXXXX.co.uk>
X-SpamTest-Envelope-From: [email]robot@XXXX.ru[/email]
X-SpamTest-Group-ID: 00000000
X-SpamTest-Info: Profiles 1284 [July 25 2007]
X-SpamTest-Info: helo_type=3
X-SpamTest-Info: {relay has no DNS name}
X-SpamTest-Method: none
X-SpamTest-Rate: 40
X-SpamTest-Status: Not detected
X-SpamTest-Status-Extended: not_detected
X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release
а�аДб�аАаВб�б�аВб�аЙб�аЕ.
а�б� (аКб�аО-б�аО аДб�б�аГаОаЙ) б�аДаЕаЛаАаЛаИ аЗаАаПб�аОб� аНаА аВаОб�б�б�аАаНаОаВаЛаЕаНаИаЕ аПаАб�аОаЛб� аДаОб�б�б�аПаА
аК б�аИб�б�аЕаМаЕ XXXXX.
а�аАб� аПаАб�аОаЛб�: XXXXX
аЁ б�аВаАаЖаЕаНаИаЕаМ, б�аЛб�аЖаБаА аПаОаДаДаЕб�аЖаКаИ аПб�аОаЕаКб�аА XXXX.
Даже тут видно, что текст письма в одной кодировке, а заголовок уже сразу вопросиками пошел.
Кстати, опять же - мне думается, что это проблема PHP, т.к. когда стоящим там же Парсер (parser.ru) отправляет сообщения в windows-1251 - все почтовые программы нормально их принимают. Без перекодировки в кои-8.
Цитата: noff
Здравствуйте.
Код:
mail( $user->Mail, "Восстановление пароля", $message,
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/plain; charset=utf-8 \r\n' .
'From: MASE <' . SERVICE_MAIL . '>\r\n' );
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/plain; charset=utf-8 \r\n' .
'From: MASE <' . SERVICE_MAIL . '>\r\n' );
Попробуй вот так:
Код:
mail( $user->Mail, '=?UTF8?B?'.base64_encode("Восстановление пароля").'?=', $message,
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/plain; charset=utf-8 \r\n' .
'From: MASE <' . SERVICE_MAIL . '>\r\n' );
'MIME-Version: 1.0' . "\r\n" .
'Content-type: text/plain; charset=utf-8 \r\n' .
'From: MASE <' . SERVICE_MAIL . '>\r\n' );
Ещё желательно последним параметром добавлять
Код:
mail(XXXX,XXXX,XXXX,XXXX,'-fтвой_мыл');
Это чтобы ответы сендмейла приходили тебе, а не админу сервера, в случае ошибок.
'=?UTF8?B?'.base64_encode("Восстановление пароля").'?='
?
!!! СПАСИБО! Помогло.