Mail_mime & koi8-r & outlook (проблема с кодировкой)

StUV

Rotaredom
Mail_mime & koi8-r & outlook (проблема с кодировкой)

код такой:

PHP:
include_once('Mail.php');
include_once('Mail/mime.php');

$crlf = "\r\n";
$win_from = 'some_win_text <mail>';
$win_subj = 'some_win_text';

$hdrs = array(
'Subject' => $win_subject,
'From' => $win_from
);

$params = array(
"text_charset"  =>	"koi8-r",
'head_charset' => "koi8-r"
);

$mime = new Mail_mime($crlf);
$heads = $mime->headers($hdrs);
$mail =& Mail::factory('mail');

$mail_text = 'some_koi8-r_text';
$mime->setTXTBody($mail_text);
$mbody = $mime->get($params);
$mail->send('some_mail', $heads, $mbody);
на mail.ru через веб-интерфейс все ОК,
в Outlook в заголовках
Subject: =?ISO-8859-1?Q?...
From: =?ISO-8859-1?Q?...

и соотв-но тело сообщения == абракадабра

from & subject в списке сообщений и в Outlook и на mail.ru распознаются нормально - видимо выдаются в win (по крайней мере в Outlook)
-------------------

если сделать
$subj/$from = convert_cyr_string($win_subj/$win_from, 'w', 'k');

то на mail.ru по-прежнему все ОК, а в Outlook и отправитель/тема сообщения перестают распознаваться
-------------------
кто-нить знает как это лечить ?

Всем спасибо.

-~{}~ 16.06.04 17:36:

ps: Mail_mime v. 1.2.1 (stable)

-~{}~ 16.06.04 18:05:

тупняк: перед отправкой
PHP:
$new_heads = array();
foreach ($heads as $head => $value) {
  $new_heads[$head] = str_replace('ISO-8859-1', 'koi8-r', $value);
} // foreach ..
и все ок, за исключением пропадания пробелов в теме в аутлуке
где-то на форуме я это уже "слышал" - так что возможно проблема будет решена, хотя и как-то криво (имхо)
-------------------------

зы: еще на форуме встречал исправленные функции кодирования заголовков для PEAR::Mail_Mime - это еще актуально - т.е. неужели исходники еще не исправили... ?
 

Макс

Старожил PHPClub
на деталях в статье про рассылку почты приведена функция преобразующая заголовки в кирилице согласно RFC.
Несколько лет ее использую - о проблемах пока не слышал
 

Bermuda

Новичок
Во-первых $mime->headers вызывается после $mime->setTXTBody. В старой документации PEAR был подробный пример.
 

StUV

Rotaredom
Maxim Matyukhin
Bermuda
Спасибо

сделал:
'Subject' => '=?koi8-r?B?'.base64_encode(convert_cyr_string($win_subject, "w","k")).'?=',
'From' => '=?koi8-r?B?'.base64_encode(convert_cyr_string($win_from, "w","k")).'?='

восстановил истинный порядок операций:
$mime->setTXTBody($koi_mail_text);
$heads = $mime->headers($hdrs);

убрал $params, т.е.:
$mbody = $mime->get();

получил то что надо :)

еще раз спасибо!
 
Сверху