Перейти к контенту
  • 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% опрошенных пользователей утверждают, что получают читабельные сообщения.

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

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

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

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

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

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

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

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

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

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

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

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