Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Опять про кодировку при работе с mail() (много и подробно) / 6 сообщений из 6, страница 1 из 1
21.12.2004, 13:34
    #32836839
Samuels
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про кодировку при работе с mail() (много и подробно)
Более года у меня отлично работала конструкция, где данные из формы передавались в mail() в кодировке win-1251 и благополучно отсылались. Тема формировалась строкой, типа $subject = "ФОРМА"; В теле письма я спокойно писал строки, типа $message .= "Телефон: "; Чтобы mail-клиент потом автоматически корректно читал кодировку, в заголовок я писал $headers .= "Content-Type: text/plain; charset=\"Windows-1251\"\n"; Вчера инженеры на моем американческом хостинге что-то намудрили и все резко перестало работать. Теперь, когда я пытаюсь поставить в тему что-то на кирилице, то при отсылке это автоматически переводится в UTF-8 и становится напрочь нечитабельным. Более того, если тело письма содержит символы из кирилицы, то в заголовок автоматически добавляется 3 строки:
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: BASE64
Естественно, и все содержимое письма тоже переколбашивается в нечитабельный вид. При попытке что-то менять в заголовке, эти 3 строки добавляются в любом случае, что приводит к еще бОльшей путанице. Получается, что в заголовке одновременно присутствуют и Content-Type: text/plain; charset=UTF-8 и Content-Type: text/plain; charset="Windows-1251".
Теперь, когда я подробно описал ситуацию, главный вопрос: Каким образом можно отключить все эти новшества и заставить PHP отправлять почту в нужной мен кодировке? Откуда он вобще берет информацию о том в какой кодировке и что должно быть?
Если это поможет, то сообщаю, что PHP стоит 4.3.9 и Apache version 1.3.33 (Unix). Хостинг американческий виртуальный.
Заранее благодарен тем, кто попытается мне помочь.
...
Рейтинг: 0 / 0
21.12.2004, 14:20
    #32836993
VERS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про кодировку при работе с mail() (много и подробно)
http://www.php.net/manual/en/function.mail.php
надо еще и заголовок письма кодировать.
Там есть пример тому.
а в кратце, заголовок должен иметь следующий вид:

Код: plaintext
$subject = "=?".$charset."?".$encoding."?".$subject_text."?=";
...
Рейтинг: 0 / 0
21.12.2004, 14:28
    #32837018
VERS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про кодировку при работе с mail() (много и подробно)
VERS http://www.php.net/manual/en/function.mail.php
надо еще и заголовок письма кодировать.
Там есть пример тому.
а в кратце, заголовок должен иметь следующий вид:

Код: plaintext
$subject = "=?".$charset."?".$encoding."?".base64_encode($subject_text)."?=";


Код: plaintext
$subject = "=?".$charset."?".$encoding."?".base64_encode($subject_text)."?=";
...
Рейтинг: 0 / 0
21.12.2004, 15:26
    #32837219
Samuels
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про кодировку при работе с mail() (много и подробно)
VERS http://www.php.net/manual/en/function.mail.php
надо еще и заголовок письма кодировать.
Там есть пример тому.
а в кратце, заголовок должен иметь следующий вид:

Код: plaintext
$subject = "=?".$charset."?".$encoding."?".$subject_text."?=";


Спасибо. Эта штука коряво, но работает. А вот как быть с телом письма? Глобальная проблема по-прежнему не решена. Темы на английском я вполне переживу, это служебная информация, а вот юзеры всякое в фомы пишут по-русски. Вот тут основные сложности.
...
Рейтинг: 0 / 0
22.12.2004, 14:12
    #32839233
Samuels
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про кодировку при работе с mail() (много и подробно)
Проблему я решил использованием mb_send_mail вместо mail. Однако, тут прорисовалась другая беда. Символы кирилицы не передаются в скрипт из формы. Латиница идет, а вот кирилические символы просто изымаются из строк бесследно. Если отправляется строка rrrяяяrrr, то в скрипт из $_POST["name"] приходит строка rrrrrr, т.е. кусок яяя просто пропадает бесследно.
Мне тут присоветовали добавить enctype="multipart/form-data" к заголовку формы, но это не помогло. Может кто знает, в чем тут проблема? Главное, что ранее все работало. Это хостер обновил PHP и начались все эти "приключения".
...
Рейтинг: 0 / 0
22.12.2004, 15:16
    #32839481
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять про кодировку при работе с mail() (много и подробно)
SamuelsОднако, тут прорисовалась другая беда. Символы кирилицы не передаются в скрипт из формы.Читать ман по Multibyte String , много думать о значении параметров конфигурации этого модуля (текущее состояние дел смотреть по phpinfo (INFO_MODULES), как можно устанавливать нужные значения читать в мане по ini_set )Может кто знает, в чем тут проблема?Хостер слишком "умный".
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Опять про кодировку при работе с mail() (много и подробно) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]