Перейти к контенту
  • 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
А у меня от этого форума вот такая фигня до сих пор приходит :D Причем это Outlook-2003 и там хоть китайскую кодировку выбирай, все равно текст не меняется, т.к. он, похоже, при приеме в Юникод превращается, и если в заголовке не указана кодировка, то он ее автоматом понимает, как КОИ-8. И в настройках это изменить нельзя. Можно только выбрать Русский. А про кодовую таблицу полный молчек.

post-28-1096628754.png

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

  • 0

Блин, у меня вообще теперь функция Емэйл не пашет

Добавлено в [mergetime]1102874256[/mergetime]

Спасибо!!!Всё работает!

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

  • 0

Возник вопрос, модет он и решон в этой теме, но я не понял.

 

Я всё поменял и письма приходст в русской кодировке. Но не полностью на русском

 

Вот так:

Тема: У Вас новое письмо на PM ( From Фо xxxxx )

 

Как исправить Фо на нормальное?

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

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

 

вообще нет такого файла, хотя почта идет... в крокозябликахhttp://forum.de-va.ru/style_emoticons/default/oops.gif

 

что делать?http://forum.de-va.ru/style_emoticons/default/help.gif

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

  • 0
Как исправить Фо на нормальное?

Ты хотел сказать, исправить From на нормальное?

Покопаться в исходниках форума, где-то оно вбито. Возможно, прямо в emailer.php.

 

вообще нет такого файла

Нет файла - нет и решения проблемы! Тут уж либо-либо. :D

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

  • 0

А у меня до сих пор Аутлук 2003 ну ни как не хочет правильно показывать сообщения от ЭТОГО конкретного форума (Ай-Би-Ресоурс). Вы уж там сами починили бы это дело, а потом нам сказали бы как вы это сделали. Вот вам кусочек из вашего хедера, в котором кодировка указана, как 8БИТ, а не Виндовская Кириллица. Естественно, он не знает, что это такое.

X-Mailer: IPB PHP Mailer
Content-type: TEXT/PLAIN
Content-transfer-encoding: 8BIT

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

  • 0
Нет файла - нет и решения проблемы! Тут уж либо-либо.

Странно - письма-то идут!

Интересно, может, в других версиях за это отвечает messenger.php?

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

  • 0

Проблемы с кодировкой уведомлений из топиков решены

(ха! только с этого форума приходится каждой письмо выковыривать мышкой в читабельный вид - и куда смотрят "местные" управители??)

 

А проблемы с емейл-рассылкой пользователей остаются! Приходится загонять копию на транслите

 

Кстати, путь к файлу совершенно иной - не то, что указано в начале тренда :D

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

  • 0
А у меня от этого форума вот такая фигня до сих пор приходит :D  Причем это Outlook-2003 и там хоть китайскую кодировку выбирай, все равно текст не меняется, т.к. он, похоже, при приеме в Юникод превращается, и если в заголовке не указана кодировка, то он ее автоматом понимает, как КОИ-8.  И в настройках это изменить нельзя.  Можно только выбрать Русский.  А про кодовую таблицу полный молчек.

 

 

ПРОЧИТАЛ Весь фак, перепробовал ВСЕ!. Такая же фигня. Причем форум лицензионный. Че делать?????????????

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

  • 0

Тоже столкнулся с такой проблемой, но после недолго курения RFC1521 всё получилось.

 

Вообще буржуи как-то наплевательски относятся к неанглоязычным пользователям :D

 

Принцип такой (делал для 2.1.3, но думаю для остальных версий то же самое):

 

Ищем файл где всё это делается (/sources/classes/class_email.php для 2.1.3). Находим функцию build_headers(). Там сразу идёт такое объявление

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 .= "Content-type: text/plain; charset=\"".$this->char_set."\"\n";

}

Его вырезаем и вставляем оязательно ПОСЛЕ следующего условия:

if ( $this->mail_method != 'smtp' )

{

if ( count( $this->bcc ) > 1 )

{

$this->mail_headers .= "Bcc: ".implode( "," , $this->bcc ) . "\n";

}

}

else

{

if ( $this->to )

{

$this->mail_headers .= "To: ".$this->to."\n";

}

$this->mail_headers .= "Subject: ".$this->subject."\n";

}

в таком виде:

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

Строку чуть выше

$this->mail_headers .= "Subject: ".$this->subject."\n";

меняем на

$this->mail_headers .= "Subject: =?".$this->char_set."?B?".base64_encode($this->subject)."?=\n";

 

Чуток коряво но работает (притом ещё и по стандарту ;) ).

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

  • 0

собственно, вот такое умное замечание

 

Господа админы, скажите пожалуйста, какого х. регистрация на вашем форуме такая ${subg}

 

По RFC заголовок Subject в письме должен быть 7 битным, для русских букв должно производится кодирование в base64 или uu :

 

Subject: *****SPAM***** Registration at йПШЛЯЙХИ ТНПСЛ (Crimea-Board)

 

в следствии этого письма от вашей борды классифицируются как спам.

 

ну насчет base64 это не прокатывает, заголовок корежиться в черти что

 

есть предложения по указанию кодировки заголовку 7bit ?

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

  • 0
ну насчет base64 это не прокатывает, заголовок корежиться в черти что

Почему? там все нормально срабатывает, это же стандарт RFC.

 

На одном форуме где идет коевая кодировка решение было таким:

/sources/lib/emailer.php

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

заменен на

		$this->mail_headers  = "From: =?koi8-r?B?".base64_encode('"'.$ibforums->vars['board_name'].'"')."?= <".$this->from.">\n";

собственно все нормально, все работает.

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

  • 0

Подскажите, пожалуйста, как решить эту проблему для кодировки utf8?

Версия 1.3.1 оригинальный работает в utf8.

Я сделал вот такие вот изменения

function build_headers()
{
	global $ibforums;

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

	if ( $this->mail_method != 'smtp' )
	{
		if ( count( $this->bcc ) > 1 )
		{
			$this->mail_headers .= "Bcc: ".implode( "," , $this->bcc ) . "\n";
		}
	}
	else
	{
		if ( $this->to )
		{
			$this->mail_headers .= "To: ".$this->to."\n";
		}
		$this->mail_headers .= "Subject: ".$this->subject."\n";
	}
	$this->mail_headers .= "Content-Type: text/plain; charset=\"utf-8\"\n";
	$this->mail_headers .= "Return-Path: ".$this->from."\n";
	$this->mail_headers .= "X-Priority: 3\n";
	$this->mail_headers .= "X-Mailer: IPB PHP Mailer\n";

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

		$this->mail_headers .= "MIME-Version: 1.0\n";
		$this->mail_headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->boundry."\"\n\nThis is a MIME encoded message.\n\n--".$this->boundry;
		$this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"utf-8\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry;
		$this->mail_headers .= $this->build_multipart();

		$this->message = "";
	}

}

Но пользователи жалуются, что получают письма, где в заголовке

Scuba Diving Club - лб веел дайвеов

Т.е. пропадают русские буквы.

И вдруг выяснилось, что если через форум отправить e-mail, то получатель получит знаки вопроса вместо текста.

В логах e-mail отображается корректно.

Помогите, пожалуйста, решить эту проблему с e-mail.

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

  • 0

Вынужден признать, что я "чайник"

Причина нечитабельности в настройке Windows и почтового клиента.

Окончательно функция выглядит так

function build_headers()
{
	global $ibforums;

	$this->mail_headers  = "From: =?utf-8?B?".base64_encode('"'.$ibforums->vars['board_name'].'"')."?= <".$this->from.">\n"; 

	if ( $this->mail_method != 'smtp' )
	{
		if ( count( $this->bcc ) > 1 )
		{
			$this->mail_headers .= "Bcc: ".implode( "," , $this->bcc ) . "\n";
		}
	}
	else
	{
		if ( $this->to )
		{
			$this->mail_headers .= "To: ".$this->to."\n";
		}
		$this->mail_headers .= "Subject: ".$this->subject."\n";
	}

	$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=\"utf-8\"\n";
	$this->mail_headers .= "Content-Transfer-Encoding: 8bit\n";

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

		$this->mail_headers .= "MIME-Version: 1.0\n";
		$this->mail_headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$this->boundry."\"\n\nThis is a MIME encoded message.\n\n--".$this->boundry;
		$this->mail_headers .= "\nContent-Type: text/plain;\n\tcharset=\"utf-8\"\nContent-Transfer-Encoding: quoted-printable\n\n".$this->message."\n\n--".$this->boundry;
		$this->mail_headers .= $this->build_multipart();

		$this->message = "";
	}

}

98% опрошенных пользователей утверждают, что получают читабельные сообщения.

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

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

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

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

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

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

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

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

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

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

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

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