Проблемы с кодировками mail()

Cruiser

Новичок
Проблемы с кодировками mail()

PHP:
$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "w","k")).'?=';
	$header    = "From: ".$sender."\r\n";
	$header   .= "Reply-To: ".$reply."\r\n";
	$header   .= "Errors-To: ".$sender."\r\n";
	$header   .= "X-Mailer: PHP / ".phpversion()."\r\n";
                $header   .= "MIME-version: 1.0\n"; 
                $header   .= "Content-type: multipart/mixed; boundary=\"frfrfrfrfrfrfrfrfrf\"\n\n"; 
	$zag = "-- frfrfrfrfrfrfrfrfrf\nContent-Type:text/html;  charset=windows-1251 \r\n"; 
			$zag .= "Content-Transfer-Encoding: 8bit\n\n";
			$zag .= "$message\n\n";
			$zag .= "-- frfrfrfrfrfrfrfrfrf\n";	
			$zag .= "Content-Type: application/octet-stream; name=\"$filename\"\n";
			$zag .= "Content-Transfer-Encoding: base64\n";	
			$zag .=  "Content-Disposition: attachment; filename=\"$filename\"\n\n";
			$zag .=   "".chunk_split(base64_encode($contents))."\n";
У хостера Апач и ФриБСД. Письма уходят с формы на сайте.
Отослал для экспиремента письма на три ящика.
mail.ru - в аутлуке поле From не читаемо (зюмлики), тема читаема, тело письма ессено в кодировке windows-1251 но аутлук выставил koi8-r.
на яндекс пришло непонятно что.
From: <[email protected]>
Subject: =?koi8-r?B?PT9rb2k4LXI/Qj9QVDlyYjJrNExYSS9Rajg0YzBoVU1EbHVUWGs0UldjcmRVaDJTVkJtUm5rNVZGQjZaejA5UHowPT89?=
Illegal-Object: Syntax error in From: address found on mail.yandex.ru:
From: ЗАОВектон <[email protected]>
^^^^^^^^^-illegal control character
||||||| \-illegal 8-bit/control character
||||||\-illegal 8-bit/control character
|||||\-illegal 8-bit/control character
||||\-illegal 8-bit/control character
|||\-illegal 8-bit/control character
||\-illegal control character
|\-illegal 8-bit/control character
\-illegal 8-bit/control character
вот это вообще не понятно что.
на newmail.ru все нормально не считая
Subject: =?koi8-r?B?PT9rb2k4LXI/Qj9QVDlyYjJrNExYSS9Rajg0YzBoVU1EbHVUWGs0UldjcmRVaDJTVkJtUm5rNVZGQjZaejA5UHowPT89?=
Где у меня ошибки и как исправить ситуацию?
 

tony2001

TeaM PHPClub
Код:
>$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "w","k")).'?='; 
                        ^^^^^     ^^^^^^^^^^    ^^^^^^^^^
>$header    = "From: ".$sender."\r\n"; 
а здесь нет ни кодировки, ни base64, ни convert_cyr

>$zag = "-- frfrfrfrfrfrfrfrfrf\nContent-Type:text/html;  charset=windows-1251 \r\n";
                                                                                                   ^^^^^^^^^
где логика здесь, объясните мне?
 

Cruiser

Новичок
поле subject почему не работает толком?
А $header = "From: ".$sender."\r\n"; я взял из статей на сайте, а про кодировку на From там ничего не говорится :(
 

tony2001

TeaM PHPClub
Cruiser
>поле subject почему не работает толком?
у тебя разные кодировки в разных местах

>А $header = "From: ".$sender."\r\n"; я взял из статей на сайте, а про кодировку на From там ничего не говорится
видимо, там не предполагается, что кто-то туда будет писать кириллицу.
 

cray

Guest
2Cruiser:
А зачем поле Subject шифровать???
Послушай tony2001 - если уж шифровать, так все...
 

Cruiser

Новичок
Не шифровать, я понял таким способом переводит кодировку принудительно в koi8-r понятной всем почтовикам.
Ну а с этим то что делать?
^^^^^^^^^-illegal control character
||||||| \-illegal 8-bit/control character
||||||\-illegal 8-bit/control character
|||||\-illegal 8-bit/control character
||||\-illegal 8-bit/control character
|||\-illegal 8-bit/control character
||\-illegal control character
|\-illegal 8-bit/control character
\-illegal 8-bit/control character
 

tony2001

TeaM PHPClub
Cruiser
тяжело с тобой.
сделай base64() для From - ошибки по этому поводу и исчезнут.
 

Cruiser

Новичок
У меня теперь другая трабла ПХП текст из формы экранирует запятые. Но я раньше делал так eregi_replace('\\', "",$message), но здесь почему то получается такое \\\"текст\\\"
Что за фигня не пойму :(

-~{}~ 06.09.04 16:48:

REG_EESCAPE
вот что пишет

-~{}~ 06.09.04 17:14:

eregi_replace('\\'.'\"',"&quot;",$message);
так вроде работает но допустим я посылаю <a href="http://www.lala.ru">lala</a>
а в теле письма при наводке мыши на lala в строке статуса так и видно в кавычках ссылку :(
Помогите кто нить хоть
 

AlexSid

Guest
Если и письмо и сабжект в win-1251, как заставить почтовый клиент отобразить тему письма в правильной кодировке?
mail("...",'=?win-1251?B?'.$subj."?=",$mail_body); ????
mail("...",'=?windows-1251?B?'.$subj."?=",$mail_body); ????
mail("...",'=?win-1251?'.$subj."?=",$mail_body); ????
Как?
P.S.: Имеются ввиду мыл-клиенты не только на компе, но и на мобилах и т.д. Поэтому ответы типа "Аутлук и так понимает" и т.д. не подходят
 

AlexSid

Guest
Дык если $subj в кодировке win, в ней и отображать надо, зачем что-то кодировать?
Я понимаю, если $subj был бы в KOI, а отображать надо в win, тогда да, тогда encode надо.
Или я туплю?
 

SiMM

Новичок
AlexSid, думать не надо - надо идти и делать, как сказано. Для более глубокого понимания происходящего - читать соответствующий RFC.
 

DEEX

Guest
Я смотрю тут про кодировку разговорились. Слушайте а у меня тут такая тема, при отправлении письма на украинском языке все украинскии символы заменяються какойто фигней (і = #, ї - №%). Можно от етого както избавиться?
 
Сверху