Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Приходят сообщения в непонятной кодировке, причем -тема- в одной а тело - в другой
Форумы портала PHP.SU » PHP » Программирование на PHP » Приходят сообщения в непонятной кодировке, причем -тема- в одной а тело - в другой

Страниц (1): [1]
 

1. nofx - 25 Апреля, 2011 - 01:07:47 - перейти к сообщению
Нарисовалась проблемка.
По идее все делаю правильно и "всё соблюдено":
1) отправляю со страницы с кодировкой UTF-8:
CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="Content-type" content="text/html; charset=utf-8">


2)есть фаил .htaccess в корне c единственной строкой:


3)вот сама функция :
PHP:
скопировать код в буфер обмена
  1.  
  2.  $to = $email;
  3.     $subject = ' Уведомление о регистрации на '.$site.'';
  4.     $message ='
  5.    <html>
  6.     <head></head>
  7.       <body>
  8.       <p>'.$name.', - вы зарегистрировались на нашем сайте <a href=www.'.$site.'/index.php >www.'.$site.'</a> и ввели следующие данные:</p><hr>
  9.      ФАМИЛИЯ: '.$fam.'<br>
  10.      ИМЯ: '.$name.'<br>
  11.      ОТЧЕСТВО: '.$otchestvo.' <br>
  12.      ШКОЛА: '.$nomer_school.' <br>
  13.      РУКОВОДИТЕЛЬ: '.$fam_rukovod.' '.$name_rukovod.' '.$otchestvo_rukovod.' <br>
  14.      E-MAIL: '.$email.' <br><hr>
  15.       </body>
  16.    </html>';
  17.       $headers2 = 'MIME-Version: 1.0\r\n';
  18.       $headers2 .= 'Content-type: text/html; charset=UTF-8\r\n';
  19.       $headers2 .='Content-Transfer-Encoding: base64 \r\n'; //тут также  пробывал -8bit, 7bit, quoted-printable
  20.       $headers2 .= 'From: Администратор <administrator@$SERVER_NAME>\r\n';
  21.     $send = MailSmtp ($to, $subject, $message, $headers2);
  22.     if ($send = TRUE)
  23.     echo "На вашу почту ( ".$email." )отправлено сообщение для подтверждения";
  24.     else echo "Сообщение для подтверждения регистрации не отправлено!";


4) в phpinfo: default_charset = UTF-8 (колонка local value)

5)В MySQL все по русский. перед запросом делаю
PHP:
скопировать код в буфер обмена
  1. mysql_query('SET NAMES utf8');


В итоге Оутлуком получаю такое письмо:

Тема: Уведомление Рѕ регистрации РЅР° mysite.ru

<html>
<head></head>
<body>
<p>п║п╣я─пЁп╣п╧, - п╡я▀ п╥п╟я─п╣пЁп╦я│я┌я─п╦я─п╬п╡п╟п╩п╦я│я▄ п╫п╟ п╫п╟я┬п╣п╪ я│п╟п╧я┌п╣ <a href=www[dot]mysite[dot]ru/index.php >www.mysite.ru</a> п╦ п╡п╡п╣п╩п╦ я│п╩п╣п╢я┐я▌я┴п╦п╣ п╢п╟п╫п╫я▀п╣:</p><hr>
п╓п░п°п≤п⌡п≤п╞: п║п╨я─я▀п╫п╫п╦п╨<br>
п≤п°п╞: п║п╣я─пЁп╣п╧<br>
п·п╒п╖п∙п║п╒п▓п·: п║п╣я─пЁп╣п╣п╡п╦я┤ <br>
п╗п п·п⌡п░: 1234 <br>
п═пёп п·п▓п·п■п≤п╒п∙п⌡п╛: п║п╦п╢п╬я─п╬п╡ п║п╦п╢п╬я─ п║п╦п╢п╬я─п╬п╡п╦я┤ <br>
E-MAIL: mymail@mail.ru <br><hr>
</body>
</html>

П.С: скопировал тему в NotePad++ и поменял кодировку на UTF-8 и о чудо - получил русский текст! Но с телом сообщения такое не проходит, это вообще не понятно что за кодировка.

И почему, кстати отображаются мои html теги тоже не пойму: ведь в header-е объявлено:
CODE (html):
скопировать код в буфер обмена
  1. Content-type" content="text/html;
2. DlTA - 25 Апреля, 2011 - 01:53:45 - перейти к сообщению
я не силен что и зачем в заголовках
поэтому не совсем понимаю зачем вообще
CODE (htmlphp):
скопировать код в буфер обмена
  1. $headers2 .='Content-Transfer-Encoding: base64 \r\n';

у меня следующее
CODE (htmlphp):
скопировать код в буфер обмена
  1. $header .="FROM: {$email}\n";
  2. $header .= "Content-Type: text/plain; charset=windows-1251\n"; // обратить внимание
  3. $header .= "X-From: {$email}\n";
  4. $header .= "Return-Path:{$email}\n";

и проблем не возникало
3. nofx - 25 Апреля, 2011 - 11:28:00 - перейти к сообщению
Да, я тупанул жестко. Заголовки нужно ставить в ДВОЙНЫЕ кавычки как у вас ))
Спасибо Вам, DlTA

 

Powered by ExBB FM 1.0 RC1