Точно ли он phpGuru? Некорректная работа Rmail

Фото: Дмитрий Базенков

На выходных решил заглянуть на сайт phpguru.org в поисках кода для работы с MIME и наткнулся на Rmail. Написав быстренько скриптик для отправки сообщений я начал тестировать его на Gmail и Mail.ru. С первого сообщения стало ясно, что автор чего-то написал не так, потому, что тема сообщения на русском языке слипалсь. Т.е. если мы делаем так $subject = ‘Первое текстовое сообщение’; То на почтовом сервисе эта тема выглядела следующим образом: Первоетекстовоесообщение.  Вобщем поковырявшись в его коде я нашел не совсем корректную функцию, которая выглядит следующим образом:


private function encodeHeader($input, $charset = 'ISO-8859-1')
{
preg_match_all('/(\w*[\x80-\xFF]+\w*)/', $input, $matches);
foreach ($matches[1] as $value) {
$replacement = preg_replace('/([\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value);
$input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input);
}

return $input;
}

Чтобы сделать работу Rmail корректной, необходимо заменить вышеупомянутую функцию на следующую


function encodeHeader($input, $charset = 'ISO-8859-1')
{
if(preg_match_all('/(\w*[\x80-\xFF]+\w*)/', $input, $matches))
$input = mb_encode_mimeheader($input,$charset, 'Q');

return $input;
}

После этого темы сообщений на русском языке будут отображаться корректно.

Не забывайте подписываться на наш блог. Особенно, если продвижение сайта и заработок в интернете для вас не пустые слова.