Перейти к контенту
  • 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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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