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

[2.3.x]Коррекция почтовых заголовков


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

Название: Коррекция почтовых заголовков

Добавил: ter

Добавлен: 20 Мар 2004

Обновлен: 21 Мар 2004

Категория: IP.Board 2.3.x

 

email-1251-fix by ter

=====================

 

 

Не все почтовые клиенты могут нормально разбирать русскую кодировку письма, если отсуствуют заголовки, явно указывающие об этом.

Mutt под Unix например этого не умеет. Поэтому мы можем видеть письма вида, сообщающие о новых регистрациях:

 

Subject: New Registration at тНПСЛ Ford Focus ЙКСАЮ ( From тНПСЛ Ford Focus ЙКСАЮ )

X-Mailer: IPB PHP Mailer<br><br><br><br>гДПЮБЯРБСИРЕ СБЮФЮЕЛШИ юДЛХМХЯРПЮРНП!

 

бШ ОНКСВХКХ ЩРН ОХЯЭЛН, Б ЯБЪГХ Я ПЕЦХЯРПЮЖХЕИ МНБНЦН ОНКЭГНБЮРЕКЪ!

оНКЭГНБЮРЕКЭ Beztuzev ГЮПЕЦХЯРПХПНБЮКЯЪ - Mar 20 2004, 00:17

бШ ЛНФЕРЕ НРЙКЧВХРЭ ЩРН СБЕДНЛКЕМХЕ ВЕПЕГ юДЛХМЖЕМРП.

дНАПНЦН бЮЛ ДМЪ!<br><br>я СБЮФЕМХЕЛ,

юДЛХМХЯРПЮЖХЪ тНПСЛ Ford Focus ЙКСАЮ.

 

Не совсем понятно, не правда ли ? Мне надоело читать эту белиберду, и подумав, что правок там секунд на 30, проделал следующие действия.

 

Открываем файл sources/lib/emailer.php

 

Находим в нем следующее:

 

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

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

$this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";^M

 

Ниже добавляем:

 

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

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

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

И чуть ниже:

 

$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;

 

Меняем на

 

$this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"Windows-1251\"\nContent-Transfer-Encod<br>ing: quoted-printable\n\n".$this->message."\n\n--".$this->boundry;

 

И всех делов, теперь почту можно читать любым rfc'шным почтовым клиентом http://www.ibresource.ru/forums/html/emoticons/smile.gif

 

Нажмите здесь, чтобы скачать файл

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

Но при этом само тело сообщения, похоже, остаётся в кодировке виндовс. А как и тело отправлять почтой в KOI8-R?
Ссылка на комментарий
Поделиться на других сайтах

to Андрей Николаев:

 

нет смысла, если стоит корректая кодировка в хеадерах сообщения, то клиент должен нормально отобразить содежимое.

 

to urisoft:

 

Не видел твоего поста на эту тему, падаю ниц :D

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

  • 1 месяц спустя...

Кстати, что это у вас за символы такие ^M в коде?

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

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

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

Я не сразу заметил, отчего у меня ставился хак, интересно а как все остальные? Надо убрать.

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

  • 2 месяца спустя...
Кстати, что это у вас за символы такие ^M в коде?

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

 

Какие именно письма с форума этот хак переводит?

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

  • 1 месяц спустя...

Roix , в версии 2: /sources/classes/class_email.php

 

найти

var $char_set = 'iso-8859-1'

(там сверху файла, сразу видно)

и поставить

var $char_set = 'windows-1251';

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

  • 5 месяцев спустя...
Roix , в версии 2: /sources/classes/class_email.php

 

найти 

var $char_set    = 'iso-8859-1'

(там сверху файла, сразу видно)

и поставить

var $char_set    = 'windows-1251';

 

Огромное спасибо! Меня это вылечило![1112337012:1112343150]Поторопился я, уведомления с форума по-прежнему приходят в кодировке "абракадабра".

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

  • 1 месяц спустя...
  • 3 недели спустя...

Для двойки помимо замены:

var $char_set     = 'iso-8859-1';

на

var $char_set     = 'windows-1251';

Нужно еще найти:

  if ( $this->html_email )
 {
	 $this->mail_headers .= "MIME-Version: 1.0\n";
	 $this->mail_headers .= "Content-type: text/html; charset=\"".$this->char_set."\"\n";
 }

и добавить сразу после:

        else
       {
	 $this->mail_headers .= "MIME-Version: 1.0\n";
	 $this->mail_headers .= "Content-type: text/plain; charset=\"".$this->char_set."\"\n";
	 $this->mail_headers .= "Content-Transfer-Encoding: 8bit\n";
       }

 

Должно помочь... :D

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

  • 3 месяца спустя...
×
×
  • Создать...

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

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