Перейти к контенту
  • 0

Проблемы с кодировкой писем с форума


BeS Yara

Вопрос

форум стоит в локальной сети предприятия. ПОДАВЛЯЮЩЕЕ большинство пользователей использует Outlook (от 2к офиса). при получении писем с форума в результате люди видят крякозябры(причем выбор кодировки из ни к чему не приводит - может помочь только "Штирлиц", что ни есть выход). посмотрев письма в Бэте, заметил что в заголовке отсутствует задание charset= (его вообще нет).

в скриптах вроде все есть

$this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"windows-1251\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry;

(emailer.php строка 147 +/-)

впрочем там какой то блок if-а, но в php я почти "0". кто нибудь сталкивался с такой проблемой? или просто знает как ее исправить(если не ошибаюсь, достаточно будет добавить задание кодировки в заголовок)?

:D

 

P.S. (v. 1.2 relise + wellcome panel + перевод от IgorekM + "Даты по-русски" для IPB версии 1.2 + Offline Mod v3.4 + QUICK_QUOTE)

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Вставь

$this->mail_headers .= "Content-Type: text/plain; charset=\"windows-1251\"\n";

 

Перед

  $this->mail_headers .= "Return-Path: ".$this->from."\n";
 $this->mail_headers .= "X-Priority: 3\n";
 $this->mail_headers .= "X-Mailer: IBForums PHP Mailer\n";

 if ( count ($this->parts) > 0 )

 

Еще по теме [>>>]

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Vanish, спасибо за совет - кодировка в заголовке появилась. завтра испытаю на работе.

 

не подскажешь, посылка сообщений на ICQ из форума идет через вэб интерфейс www.icq.com (как описано http://php.spb.ru/php/icq.html) или напрямую? - пытался искать в скриптах и www.icq.com, и login.icq.com, бесрезультатно :D суть вопроса в общем-то изложена здесь

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вставь

Код

 

$this->mail_headers .= "Content-Type: text/plain; charset=\"windows-1251\"\n";

 

 

 

Перед

Код

 

$this->mail_headers .= "Return-Path: ".$this->from."\n";

$this->mail_headers .= "X-Priority: 3\n";

$this->mail_headers .= "X-Mailer: IBForums PHP Mailer\n";

 

if ( count ($this->parts) > 0 )

 

кто не знает - путь до файла emailer.php - \sources\lib\emailer.php

Ссылка на комментарий
Поделиться на других сайтах

  • 0

увы MS Outlook проявил всю свою &$@%*& сущность - письмо читать стал, а вот кодировку полей "тема" и "from" упорно пытался прочитать по своему.

короче выставил в заголовке кодировку koi8-r, и convert_cyr_string-ом переконвертил все в кои. решение половинчатое, но на большее пока знаний не хватило :D

если вдруг кому понадобится, то вот (кодировка форума win1251; это все в emailer.php)

было:

$this->mail_headers  = "From: \"".$ibforums->vars['board_name']."\" <".$this->from.">\n";

стало:

$this->mail_headers  = convert_cyr_string ("From: \"".$ibforums->vars['board_name']."\" <".$this->from.">\n",w,k);

 

было:

$this->subject = $this->clean_message($this->subject);

стало:

$this->subject = convert_cyr_string ($this->clean_message($this->subject),w,k);

 

было:

$this->subject .= " ( From ".$ibforums->vars['board_name']." )";

стало:

$this->subject .= " ( From ".convert_cyr_string ($ibforums->vars['board_name'], w, k)." )";

было:

$this->message = $this->clean_message( $this->message );

стало:

$this->message = convert_cyr_string ($this->clean_message( $this->message ),w,k);

Ссылка на комментарий
Поделиться на других сайтах

  • 0

BeS Yara

Попробуй добывить к тому что написал Vanish:

$this->mail_headers .= "Content-Transfer-Encoding: 8bit\n";

и

$this->mail_headers .= "MIME-Version: 1.0\n";

 

Должно получиться примерно так:

  $this->mail_headers .= "Return-Path: ".$this->from."\n";
 $this->mail_headers .= "X-Priority: 3\n";
 $this->mail_headers .= "X-Mailer: IBForums PHP Mailer\n";
 $this->mail_headers .= "MIME-Version: 1.0\n";
 $this->mail_headers .= "Content-Type: text/plain; charset=windows-1251\n";
 $this->mail_headers .= "Content-Transfer-Encoding: 8bit\n\n";

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Он все правильно с перекодировкой делал, остальные заголовки лишние, кроме разве что 8-ми битового encoding'а
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Письмо авторизации приходит в неверной кодировке. Как это исправить?

а точнее? - в какой кодировке форум, в какой кодировке пришло письмо? чем смотрел (MSOL, MSOE, TheBat)?

я так понял, что текст писем переводной, переводил сам? если да - проверь в каком формате сохранился (DOS/WIN)?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Для начала прошу обращаться ко мне как к женскому полу :D А то обидно как-то. Я в это плохо разбираюсь. Суть дела опишу. Регистрируюсь я на форуме, зачем иду на почту чтобы авторизоваться. А письмо в другой кодировке (вот такого плана бШ ОНКСВХКХ ЩРН ОХЯЭЛН, РЮЙ ЙЮЙ ЩРНР e-mail ЮДПЕЯ

АШК ХЯОНКЭГНБЮМ ОПХ ПЕЦХЯРПЮЖХХ МЮ ТНПСЛЕ.)

Как сделать чтобы все это было на русском.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Я так понимаю что это тут исправляется sources/lib/emailer.php

 

147 строка

$this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"iso-8859-1\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry;

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Meowth[OGD]

Я так понимаю что это тут исправляется

В приведенном тобой коде кодировки устанавливается только если count ($this->parts) > 0 (В основном если есть аттачменты)

Надо чуть выше после:

  $this->mail_headers .= "Return-Path: ".$this->from."\n";
 $this->mail_headers .= "X-Priority: 3\n";
 $this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";

Дописать:

  $this->mail_headers .= "Content-Type: text/plain; charset=windows-1251\n";
 $this->mail_headers .= "Content-Transfer-Encoding: 8bit\n\n";

 

Хотя могу и ошибаться :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

2Cindi - i`m so sorry :D

бШ ОНКСВХКХ ЩРН ОХЯЭЛН, РЮЙ ЙЮЙ ЩРНР e-mail ЮДПЕЯ

АШК ХЯОНКЭГНБЮМ ОПХ ПЕЦХЯРПЮЖХХ МЮ ТНПСЛЕ

похоже письмо распозналось как WIN1251, хотя текст был в KOI8-R. по крайней мере бредом перекодировка из ANSI в KOI8-R дает:

Вы получили это письмо, так как этот e-mail адрес

был использован при регистрации на форуме

, так что судя по всему сам форум в кои, соответственно и прописать в emailer.php надо кои (имхо)

если форум - http://forum.mamka.ru, то там вроде в заголовках win1251 прописано... если несложно, приведи здесь служебный заголовок письма (в бэте можно просмотреть по ctrl+K) - там где есть строчка "Content-Type: text/plain; ......"

а учитывая

Регистрируюсь я на форуме, зачем иду на почту чтобы авторизоваться. А письмо в другой кодировке
- вопрос был как справиться с этим со стороны пользователя, а не хозяина форума. путей вижу 2 - использовать почтовик умеющй нормально работать с кодировками (например The Bat - если не ошибаюсь, там даже перекодировщик автоматический есть); второй заиметь отдельный перекодировщик (например "Штирлиц" можно взять тут). Изменено пользователем BeS Yara
Ссылка на комментарий
Поделиться на других сайтах

  • 0

BeS Yara

путей вижу 2 - использовать почтовик умеющй нормально работать с кодировками (например The Bat - если не ошибаюсь, там даже перекодировщик автоматический есть)

 

а z-mail плохой мыл? не стану же я из-за какого-то форума менять его... Это просто смешно. Пусть хоть такие письма приходят.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
а z-mail плохой мыл? не стану же я из-за какого-то форума менять его...

полностью согласен - пользователь не должен подстраиваться под форум.

поэтому, если форум твой, надо настраивать.

если http://forum.mamka.ru/ - твое, то письма идут в win1251, но в заголовке кодировка не прописана.

попробуй сделать как писал urisoft - по крайней мере тело письма должно начать правильно читаться в любом мэйлере. если заголовок все еще не будет читаться нормально(поля от, тема), то будет сложнее - если почтовик не способен использовать для этих полей кодировку тела(как это было в моем случае), то придется формировать их кодами (у меня случай проще - сеть корпоративная, нужно было подстроиться только под MSOL - мне хватило перекодировки всего в KOI8, кстати вариант - кои был стандартом де-факто русской кодировки, возможно если все будет в кои, то этого будет достаточно. тогда см. мой пост)

например такие заголовки как идут у меня в сети:

Received: by intramail.cad1.su

        id <01C33BC5.6EC2EB90@intramail.cad1.su>; Thu, 26 Jun 2003 13:29:24 +0400

Message-ID: <3DEE2F16F7F8D411B50C00A024B36D7141D647@intramail.cad1.su>

From: =?koi8-r?Q?=EE=C1=D5=CD=CF=D7_=E0=2E=F7=2E?= <adventurer@*******.su>

To: =?koi8-r?Q?=E2=C5=D3=D3=CF=CE=CF=D7_=E4=2E=E9=2E?= <bes@*******.su>

Subject:

Date: Thu, 26 Jun 2003 13:29:24 +0400

MIME-Version: 1.0

Content-Type: text/plain;

        charset="koi8-r"

Content-Transfer-Encoding: base64

как видишь, поля From и To представлены в виде набора кодов символов с указанием кодировки...

надеюсь, такие сложности не понадобятся.

З.Ы. опять же если http://forum.mamka.ru/ твой, то удали пользователя testuser - пришлось региться для получения письма

З.З.Ы. может z-mail и хорош, но по крайней мере бэтом письмо прочитано на 5 балов :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0
From: =?koi8-r?Q?=EE=C1=D5=CD=CF=D7_=E0=2E=F7=2E?= <adventurer@*******.su>

Насколько я понимаю - это quoted-printable. Или я не прав ?

Можно ведь и win-1251 в quoted-printable перевести. И должно везде читаться.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Можно ведь и win-1251 в quoted-printable перевести. И должно везде читаться.

само собой, но я так не умею :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

BeS Yara

Можно вроде для полей From и Subject и base64 использовать.

Типа:

function get_quoted($text,$charset)

{

return "=?".$charset."?B?".base64_encode($text)."?=";

}

 

Ну и по тексту в emailer.php вместо:

$this->mail_headers  = "From: \"".$ibforums->vars['board_name']."\" <".$this->from.">\n";

вставить:

$this->mail_headers  = "From: \"".get_quoted($ibforums->vars['board_name'],"windows-1251")."\" <".$this->from.">\n";

 

Для Subject аналогично. Сам текст не кодировать. Указать charset=windows-1251.

Должно вроде работать. :D Надо будет проверить...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вставь

Код

 

$this->mail_headers .= "Content-Type: text/plain; charset=\"windows-1251\"\n";

 

 

 

Перед

Код

 

$this->mail_headers .= "Return-Path: ".$this->from."\n";

$this->mail_headers .= "X-Priority: 3\n";

$this->mail_headers .= "X-Mailer: IBForums PHP Mailer\n";

 

if ( count ($this->parts) > 0 )

 

это сработало для версии 1.2, а для 1.3 final работает?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Коллеги, извините, есть один дурацкий вопрос.

Значит, имею в файле emailer.php следующие строки кода:

$this->mail_headers .= "Return-Path: ".$this->from."\n";
                $this->mail_headers .= "X-Priority: 3\n";
                $this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";
  $this->mail_headers .= "Content-Type: text/plain; charset=windows-1251\n";

Однако письмо, отправляемое из Админпанели через функцию Mail Inactive users приходит вот в таком виде:

дНАПШИ ДЕМЭ, СБЮФЮЕЛШИ ЙНККЕЦЮ. щРН ОХЯЭЛН ХГ ТНПСЛЮ йЮЧР-йНЛОЮМХЪ ФСПМЮКЮ йЮРЕПЮ Х ъУРШ (http://www.katera.ru/forum). лШ...

При этом заголовок письма полностью корректно читается по-русски.

Что я делаю не так?

 

P.S. Письма, отправляемые юзерами друг другу через кнопку E-Mail доходят абсолютно нормальными...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Люди, вот перечитал тему и так и не понял какой же все-таки решение этой проблемы? Так получается ни к чему и не пришли...

просто хочется получить конкретный ответ на вопрос: как сделать чтоб уведомления на email с форума приходили пользователям в читабельном виде. :D

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.