Искать  
 
   
1 из 2
1
Кривая кодировка в теме письма
Отправлено: 12 Февраль 2009 11:30 A.M.   [ Игнорировать ]
Новичок
Avatar
Rank
Всего сообщений:  50
Зарегистрирован  2008-02-01

Где выставить кодировку заголовка 7 bit для уведомлений, отправляемых сайтом?

У меня почему-то восьмибитовая, письма приходят крепко битые wink.

Надо 7 bit. Порылся в форуме и в KB на ee.com и здесь — ответа не нашел.

 Подпись 

iPhone и iPod: советы, новости, обзоры

Профиль
 
 
Отправлено: 31 Март 2009 12:52 P.M.   [ Игнорировать ]   [ # 1 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

В новых версиях EE (старше  августовской) появилась ошибка с кодировкой в теме письма - при длинном тексте часть букв приходит в виде вопросов. На данный момент вопрос по этому поводу уже поднят на офф. форуме.
Как считает поднявший эту тему автор, ошибка происходит из-за того, что EllisLab внедрила функционал перекодирование заголовков в ASCII.

p.s. Я проверил на нескольких сайтах, включая EEclub. Данный баг наблюдается везде. Может все же у кого работает (UTF-8 + длинные имена)?

 Подпись 

booooring…

Профиль
 
 
Отправлено: 31 Март 2009 01:53 P.M.   [ Игнорировать ]   [ # 2 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27

проблема наблюдается на нескольких сайтах, где utf-8 стоит, версии 1.6.6, 1.6.7

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 31 Март 2009 09:07 P.M.   [ Игнорировать ]   [ # 3 ]
Member
Avatar
RankRankRank
Всего сообщений:  325
Зарегистрирован  2008-06-16

Да, есть такое, причём utf-8 ставится “корректно”. В блогах, в базе, в PHPMyAdmin - всё ок. А вот в заголовках писем - какие-то знаки + пробелы появляются в словах непонятно откуда!

 Подпись 

Всё что делается - не всё нами принимается...

Профиль
 
 
Отправлено: 31 Март 2009 11:16 P.M.   [ Игнорировать ]   [ # 4 ]
Member
Avatar
RankRankRank
Всего сообщений:  153
Зарегистрирован  2008-08-19

тоже сталкивался с этой проблемой. решилась только перекодированием utf8->cp1251 темы письма при отправке. типа:

$title iconv('utf8''cp1251'$title); 
Профиль
 
 
Отправлено: 31 Март 2009 11:20 P.M.   [ Игнорировать ]   [ # 5 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  1423
Зарегистрирован  2007-12-27
Denik - 31 Март 2009 11:16 P.M.

тоже сталкивался с этой проблемой. решилась только перекодированием utf8->cp1251 темы письма при отправке. типа:

$title iconv('utf8''cp1251'$title); 

где должно прописываться?

 Подпись 

ExpressionEngine - SEO-ориентированный движок

Профиль
 
 
Отправлено: 31 Март 2009 11:37 P.M.   [ Игнорировать ]   [ # 6 ]
Member
Avatar
RankRankRank
Всего сообщений:  153
Зарегистрирован  2008-08-19
mrtt - 31 Март 2009 11:20 P.M.

где должно прописываться?

ну я вообще юзал свой плагин: smile

{exp:send_email to="mail_to@mail.com" title="превед медвед, как дела?" charset="utf8" iconv="cp1251"}
   {message}
      текст письма
   {
/message}
{
/exp:send_email} 

а если там шоб всю систему сразу пофиксить, наверно что-то вроде этого:

ВАРИАНТ 1
в файле /system/core/core.email.php (прмерно строка №778) заменить это:

function prep_q_encoding($str$from FALSE)
    
{
        
global $PREFS

на это:

function prep_q_encoding($str$from FALSE)
    
{
        
global $PREFS;
        
$str iconv($PREFS->ini('charset'), 'cp1251'$str); 


ВАРИАНТ 2
в файле /system/core/core.email.php (прмерно строка №293) заменить это:

function subject($subject)
    
{
        $subject 
$this->prep_q_encoding($subject);
        
$this->add_header('Subject'$subject);
    

на это:

function subject($subject)
    
{
        
global $PREFS;
        
$subject iconv($PREFS->ini('charset'), 'cp1251'$subject);
        
$subject $this->prep_q_encoding($subject);
        
$this->add_header('Subject'$subject);
    

(возможно строку //$subject = $this->prep_q_encoding($subject); - надо будет закомментировать)


ВАРИАНТ 1,2 - написал только что, не проверяя.
вариант 2 - подействует соответственно только на заголовок письма.

Профиль
 
 
Отправлено: 31 Март 2009 11:50 P.M.   [ Игнорировать ]   [ # 7 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

не совсем правильно - придется хакать систему и постоянно об этом помнить + iconv может быть не у всех.
Наш Макс уже локализовал проблему - во время преобразования prep_q_encoding символ переноса строки исчезает. То есть проблема даже не кодировкой. И что самое смешное - когда посылают тестовые письма с инсталляции EllisLab, они приходят корректно...

 Подпись 

booooring…

Профиль
 
 
Отправлено: 31 Март 2009 11:53 P.M.   [ Игнорировать ]   [ # 8 ]
Member
Avatar
RankRankRank
Всего сообщений:  153
Зарегистрирован  2008-08-19
Calm - 31 Март 2009 11:50 P.M.

не совсем правильно - придется хакать систему и постоянно об этом помнить + iconv может быть не у всех.
уже локализовал проблему - во время преобразования prep_q_encoding символ переноса строки исчезает. То есть проблема даже не кодировкой. И что самое смешное - когда посылают тестовые письма с инсталляции EllisLab, они приходят корректно...

у меня времени на разбор функции prep_q_encoding небыло. можешь выложить готовое правильное решение ?

Профиль
 
 
Отправлено: 31 Март 2009 11:54 P.M.   [ Игнорировать ]   [ # 9 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

Пока еще нет - сейчас идет переписка с Робином, что бы понять почему же у нас так происходит. Возможно будет багфикс.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 01 Апрель 2009 09:57 A.M.   [ Игнорировать ]   [ # 10 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

последняя информация - глюк происходит при отправки писем с помощью PHP Mail. SendMail и SMPT работают нормально. Причина пока не понятна - в mail() subj входит с символами переноса строки (\n), а при отправление они удаляются и строка ломается.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 01 Апрель 2009 12:06 P.M.   [ Игнорировать ]   [ # 11 ]
Member
Avatar
RankRankRank
Всего сообщений:  153
Зарегистрирован  2008-08-19
Calm - 01 Апрель 2009 09:57 A.M.

последняя информация - глюк происходит при отправки писем с помощью PHP Mail. SendMail и SMPT работают нормально. Причина пока не понятна - в mail() subj входит с символами переноса строки (\n), а при отправление они удаляются и строка ломается.

а не имеет ли смысла просто откатиться на предыдущую, стабильную, версию этой функции кодирования?

Профиль
 
 
Отправлено: 01 Апрель 2009 05:46 P.M.   [ Игнорировать ]   [ # 12 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

Господа, на каких хостингах у вас находятся сайты, где наблюдается данная ошибка?

 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Апрель 2009 01:08 P.M.   [ Игнорировать ]   [ # 13 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

В общем, решение пока одно называют - переключить протокол на sendmail. Причем вообще забавно получается - радостно пишут о том, что вот им удалось найти решение, какие они хорошие и т.д. Хотя на 2 поста выше уже приводится такое же решение человеком который инициировал топик. На вопрос, “а почему собственно не кодировать в base64 (что по хорошему должно происходить с длинными заголовками в utf-8)”, написали ответ “ну сейчас же все решили, а с base64 0 Ну пускай будет хорошая фитча на следующие доработки”.

 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Апрель 2009 10:02 P.M.   [ Игнорировать ]   [ # 14 ]
Администратор
RankRankRankRank
Всего сообщений:  1354
Зарегистрирован  2008-01-02

Как результат, данную проблему перевели в разряд багов.
Исправленная версия core.email.php будет в следующем релизе. А кому не терпится - качаем исправленный Эллисами файл из аттача.

Приложения с файлами
core.email.php.zip  (Размер файла: 11KB - Загрузок: 421)
 Подпись 

booooring…

Профиль
 
 
Отправлено: 02 Апрель 2009 10:35 P.M.   [ Игнорировать ]   [ # 15 ]
Администратор
Avatar
RankRankRankRank
Всего сообщений:  891
Зарегистрирован  2008-01-07

да теперь вроде нормальные письма идут

Профиль
 
 
   
1 из 2
1