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

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

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

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

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

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

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

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

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

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

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

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

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