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

Кодировка заголовка письма в 2.3


Kvendi

Вопрос

Помню где- то видел уже решение, но так и не нашел (

мне все письма приходят с заголовками =?windows-1251?Q?=CD=EE=E2=FB=E9=20=EF=EE=EB=FC=E7=EE=E2=E0=F2=E5=EB=FC=20=ED=E0=20=D4=EE=F0=F...

.....

стоит 2.3.1

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

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

  • 0
В "Багах" её уже давно исправили, достаточно в поиске "=?windows-1251?" вбить: http://www.ibresource.ru/forums/index.php?...dows-1251\?
Ссылка на комментарий
Поделиться на других сайтах

  • 0
:D

2) Попробуйте сделать так:

Открыть ./sources/classes/class_email.php, найти:

$this->mail_headers['Subject'] = $this->subject;

заменить на:

$this->mail_headers['Subject'] = '=?windows-1251?B?'.base64_encode($this->subject)."?=\n";

Найти:

//$this->mail_headers['Return-Path'] = $this->from;
$this->mail_headers['X-Priority'] = "3";
$this->mail_headers['X-Mailer'] = "IPB PHP Mailer";

Заменить на:

//$this->mail_headers['Return-Path'] = $this->from;
//$this->mail_headers['X-Priority'] = "3";
//$this->mail_headers['X-Mailer'] = "IPB PHP Mailer";

Найти:

// else
{
$this->mail_headers['Content-type'] = 'text/plain; charset="'.$this->char_set.'"';
}

Заменить на:

// else
// {
// $this->mail_headers['Content-type'] = 'text/plain; charset="'.$this->char_set.'"';
// }

Не помогло, все тоже самое, кодировка заголовка письма кривая (

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

  • 0

Заголовок стал таким

=?windows-1251?Q?=?windows-1251?B?PT93aW5kb3dzLTEyNTE/Qj9QVDkzYVc1a2IzZHpMVEV5TlRFL1FqOVFWRGt6WVZjMWEySXpaSHBNVkVWNVRsUkZMMUZxT1ZGV1JH

dDZXVlpqTVdFeVNYcGFTSEJOVmtWV05WUnNVa1pNTVVaeFQxWkdWMUpIZERaWFZscHFUVmRGZVZOWWNH

R

lRTRUpPVm10V1YwNVdVbk5WYTFwTlRWVmFlRlF4V2tkV01VcElaRVJhV0Zac2NIRlVWbVJHWlZaT1dXT

k

hSbFJUUlVwUFZtMTBWMVl3TlZkVmJrNVdZVEZ3VGxSV1ZtRmxSbEY0VjJ0a1YwMVZjRWxhUlZKaFYwWm

F

jMk5JUmxWV2JWSkhXbFphVDFkWFRraFNiRkpVVWxWd1VGWnRNVEJXTVZsM1RsWmtWbUpyTlZkWlZFWjN

W

R3hTVjFadFJteFNiRVkwVmpKMGExWXdNVlpqUld4aFVsWkthRll3V21Gak1rNUpVbXhXVjJKV1NraFhi

R

nBoVkRGa1dGUnJhRk5pUmtwVlZXeFdkMVZHV25STlZFSlhUVlpzTTFSc1dtdFdiVXB5VGxaa1dsWkZXa

k

5XUjNoVFZqRmFkRkp0ZUZOaVJWa3dWbXBLTUdFeFdYZE5WbHBxVWxkNGFGVnNXa3RoUmxsM1YyMUdhaz

F

yTlVwVmJYaFhWakpLVjFOcmFGaGlSbkJvVmtSR2ExZEdVbkpoUms1cFVtdHdWbFpYZUZka01WWkhWMjV

T

VGxaRlNsaFVWbHB6VFRGU2MxZHRkRmRpVlhCNVZHeGFhMWRzV2taWGFrNVhVak5vVkZacVJtRmtSa3Aw

W

lVaT2FWSldiRFpXTVZwWFlUQXhSMWRzWkZSaVJscFVXVlJPUTFsV1duTmFSemxPVFZad2VsZHJWakJWT

U

RGWFkwWmFWbFl6YUZoV2FrWkxWMVpHYzFKc1pGTmxhMVYzVjFaU1I

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

  • 0
Не знаю точного формата, но =?windows-1251?Q? имхо лишнее. Попробуйте найти строчку где это добавляется и закомментировать её.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Да, поставьте там /* */.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Тож самое...

 

Теперь нет надписи виндовс 1251

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

  • 0

Здравствуйте!

 

(версия 2.3.5. Чтение форума не помогло)

 

Письма с форума приходят с одной проблемой. В заголовке в поле "От:" пишет:

 

тНПСЛ бКЮДХЛХП бШЯНЖЙХИ . рБНПВЕЯРБН Х ЯСДЭАЮ

 

В файле class_email.php стоит windows-1251. Пробовал менять на KOI8-R - не помогло.

 

Что делать?

 

Спасибо,

Максим

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

  • 0

Итак цитирую:

Проблема

 

Письма приходящие пользователям с форума содержит «иероглифы» в поле «От»

Причины

 

В версии IPB 2.3, в поле «От» писем уведомлений, приходящих с форума, кроме исходящего email добавили ещё и название форума. Оно не зашифровываются, из-за чего появляется в email клиентах в виде не читаемого текста.

Решение

 

Чтобы исправить ошибку, откройте для редактирования файл /sources/classes/class_email.php. Найдите в нём код:

 

$this->mail_headers[ $header ] = $orig_value;//$this->from;

$enc_headers[ $header ] = $orig_value;//$this->from;

 

Замените его на:

 

$this->mail_headers[ $header ] = $this->from;

$enc_headers[ $header ] = $this->from;

 

Сохраните файл и загрузите на сервер. Это должно решить проблему.

Реально не помогло.

Но я добился положительного результата.

Делаем всё, что предложено в цитате выше и, если не помогло, опускаемся в коде на несколько строк ниже и находим:

 

$this->mail_headers[ $header ] = $value;

 

...и заменяем на:

 

$this->mail_headers[ $header ] = $orig_value;//$this->from;

 

...вот теперь работает и кодировка заголовка письма правильная.

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

  • 0

версия 2.3.5, в поле subject вижу следующее:

 

=?windows-1251?Q?=CD=EE=E2=FB=E9=20=EF=EE=EB=FC=E7=EE=E2=E0=F2=E5=EB=FC=20=ED=E0=20=D4=EE=F0=F3=E
C=20êëà=ED=E0=20=C3=ED=E5=E2=20(=20=D4=EE=F0=F3=EC=20êëà=ED=E0=20=C3=ED=E5=E2=20)?=

 

пробовал менять

 

$this->mail_headers[ $header ] = $value;

 

на:

 

$this->mail_headers[ $header ] = $orig_value;//$this->from;

 

что-то не выходит... подскажите что точно менять то?

 

вот часть моего файла class_email.php

 

	/*-------------------------------------------------------------------------*/
// ENCODE HEADERS - RFC2047
/*-------------------------------------------------------------------------*/

function encode_headers( $headers = array() )
{	
	$enc_headers = count($headers) ? $headers : $this->mail_headers;

	foreach( $enc_headers as $header => $value) 
	{
		$orig_value = $value;

		preg_match_all( '/(\w*[\x80-\xFF]+\w*)/', $value, $matches );

		foreach ($matches[1] as $match_value)
		{
			if( $header == 'From' OR $header == 'Content-Type' OR $header == 'Content-Disposition' )
			{
				// Either sendmail or the email servers don't like 'From' encoded...let's remove the board name
				// 	and just move along, as email address cannot contain nasty characters themselves

				$this->mail_headers[ $header ] = $orig_value;//$this->from;
				$enc_headers[ $header ] = $orig_value;//$this->from;

				continue 2;
			}

			$replacement = preg_replace_callback( '/([=_\?\x00-\x1F\x80-\xFF])/', create_function( '$match', 'return "=" . strtoupper( dechex( ord( "$match[1]" ) ) );' ), $match_value );

		   	$value = str_replace( $match_value, $replacement, $value );
		}

		if( $orig_value != $value )
		{
			$value = '=?' . $this->char_set . '?Q?' . str_replace( " ", "=20", $value ) . '?=';
		}

		if( !count($headers) )
		{
			$this->mail_headers[ $header ] = $value;
		}
		else
		{
			$enc_headers[ $header ] = $value;
		}
	}

	return $enc_headers;
}

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

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

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

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

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

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

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

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

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

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

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

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