Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка email и вредная кодировка 
V
    Опции темы
InfMag
Дата 10.1.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Вот пытаюсь отправить email, но почему-то тема письма на русском отображается иероглифами, а само письмо нормально, посмотрел вот заголовки других писем у себя на ящике, тема там выводится вот так:
Код

Subject: =?windows-1251?B?5+Dq4Oc=?=

Как это понимать??

Код

$email = '[email protected]';
$emlHeaders  = "From: User World <[email protected]>\r\n";
$emlHeaders .= "Reply-To: User World <[email protected]>\r\n";
$emlHeaders .= "Return-Path: User World <[email protected]\n";
$emlHeaders .= "Message-ID: User World <".time()."[email protected]>\r\n";
$emlHeaders .= "Date: ".date("r")."\r\n";
$emlHeaders .= "MIME-Version: 1.0\r\n";
$emlHeaders .= "X-Mailer: User World\r\n";
$emlHeaders .= "Content-Type: text/plain; charset=windows-1251\r\n";
$emlHeaders .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
mail($email, 'Тема письма русскими буквами', 'Текст сообщения', $emlHeaders)


Все ли тут верно??

Добавлено @ 20:03
Хотя постойте... Когда я отправил мессагу на яднекс, то все нормально отобразилось, а вот на серверный мэил нифига. В чем же тут проблема?? Может использовать UTF-8 или что-то в этом духе??

Это сообщение отредактировал(а) InfMag - 14.1.2008, 13:21
PM   Вверх
FractalizeR
Дата 11.1.2008, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: 2
Всего: 4



Цитата

но почему-то тема письма на русском отображается иероглифами

Где именно она так отображается? Откуда вы ее просматриваете? Тело письма полностью с заголовками приведите здесь

Цитата
Subject: =?windows-1251?B?5+Dq4Oc=?=

Это нормальная ситуация


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
InfMag
Дата 14.1.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Я изучил исходники и понял в чем проблема!
Вот то, что передает яндекс:
Код

Subject: =?windows-1251?B?5+Dq4Oc=?=

А вот то, что передает письмо отосланное с пхп
Код

Subject: Привет

Тоесть он не отмечает кодировку, а просто пишет на русском тему письма... Что делать? Как заставить его отмечать кодировку??
PM   Вверх
InfMag
Дата 14.1.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Яндекс нормально выводит тему сообщения, наверное берет общую кодировку письма: Content-Type: text/plain; charset=windows-1251   а вот на других почтовых клиентах коракури :'(
Может какие-то свойства у функции mail() есть, чтобы обрабатывать тему письма учитывая кодировку...
PM   Вверх
GeneralElectric
Дата 14.1.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



InfMag, PHP и не должен  "отмечать кодировку" - он шлет ровно то, что ты ему даешь.
Cледовательно, надо написать код, который будет формировать строку нужного формата. Благо, это нетрудно - между двух последних вопросительных знаков вставить результат bas64_encode('Тема письма русскими буквами')

PM MAIL   Вверх
InfMag
Дата 15.1.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



GeneralElectric, попробовал, не помогло, говорит мол такой функции не знает. пхп 4.4.3 помоему
Код

Call to undefined function: bas64_encode()


Добавлено через 5 минут и 7 секунд
GeneralElectric, догнал, не bas, а base но теперь другая проблема...
Код

=?windows-1251?z+7x8vPv6Osg5+Dq4OcgIzE3ICjv8O7k8+ry7uIg4iDn4Org5+U6IDEp

вот что выводит, когда в меил я задаю тему:
Код

$emlSubject_ADM = '=?windows-1251?'.base64_encode('Поступил заказ #'.$number.' (продуктов в заказе: '.$products_count.')');

Выводит он эту муть в теме сообщения

Добавлено через 10 минут и 40 секунд
GeneralElectric, может приведешь работающий пример?
PM   Вверх
GeneralElectric
Дата 15.1.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



ну разумеется - ты же не соблюл формат.
посмотри на имеющийся у тебя заголовок повнимательнее.
ну, или перечитай мою рекомендацию
PM MAIL   Вверх
InfMag
Дата 15.1.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



GeneralElectric, не,.. я все внимательно посмотрел, вот гляди:
Если пишу 
Код

$emlSubject_ADM = '=?windows-1251?'.base64_encode('Поступил заказ #'.$number.' (продуктов в заказе: '.$products_count.')');

То выводит: =?windows-1251?z+7x8vPv6Osg5+Dq4OcgIzI1ICjv8O7k8+ry7uIg4iDn4Org5+U6IDEp
Если же 
Код

$emlSubject_ADM = '=?windows-1251?'.base64_encode('Поступил заказ #'.$number.' (продуктов в заказе: '.$products_count.')').'?';
 просто добавив вопросительный знак в конец
То выводит: =?windows-1251?z+7x8vPv6Osg5+Dq4OcgIzI1ICjv8O7k8+ry7uIg4iDn4Org5+U6IDEp??=
И непонятно откуда появляется еще в конце ?=
PM   Вверх
GeneralElectric
Дата 15.1.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



Нет. Ты невнимательно посмотрел.
И невнимательно прочитал. между двух последних вопросительных знаков 
PM MAIL   Вверх
InfMag
Дата 15.1.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



GeneralElectric, посмотри мой пример, я так и сделал... :(
Цитата

=?windows-1251? тут то самое место между двух вопросительных знаков??? ?=


Добавлено через 1 минуту и 49 секунд
GeneralElectric, хотя погоди, может ты имел виду это:
Цитата

=?windows-1251?B?  !!!  =?=

PM   Вверх
InfMag
Дата 16.1.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



О ДА! Великое чудо! smile Вот это сработало на ура, что аж плясать хочется:
Код

mail($email, '=?windows-1251?B?'.base64_encode('Поступил заказ #'.$number.' (продуктов в заказе: '.$products_count.')').'=?=', $emlMsg, $emlHeaders);


GeneralElectric, спасибо конечно большое, но жаль неясно разьясняешься, мог бы тыкнуть пальцем нежели чем направить искать между строк. Любой может сразу не догнать.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0621 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.