[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Каракули при отправке почты.
andrew_3db
Добрый вечер. В PHP я не силен, и поиск не помогsad.gif
Подскажите:
Есть форма:

Код

<B>Напишите нам:</B>
<FORM ACTION="PHP/send.php" METHOD=post>
<TABLE BORDER=0>
<TR>
<TD>Тема</TD>
<TD>
<INPUT type=text name="theme" cols=40>
</TD>
</TR>
<TR>
<TD colspan=2>
Сообщение: <BR><TEXTAREA name="mes" cols=40 rows=5></TEXTAREA>
</TD>
</TR>
<TR>
<TD colspan=2 align=center><input type=submit value="Отправить">
<INPUT type=reset value="Очистить">
</TD>
</TR>
</TABLE>
</FORM>


Файл PHP:
Код
<?
$to = "milo@milo.ru";
$theme = substr(htmlspecialchars(trim($_POST['theme'])), 0, 255);
$mes = substr(htmlspecialchars(trim($_POST['mes'])), 0, 10000);
mail($to,$theme,$mes);
echo "сообщение отправлено. Спасибо.<A href='www.site.ru'>Назад</A>";
?>


Так вот на "milo@milo.ru" Приходят иероглифы. Как можно исправить? Как я понял, дело в кодировке? Сайт на windows-1251.
Может в скрипт написать чего?

ЗЫ, Почта настроена на Аутлук 2003.
Спасибо.



Спустя 9 минут, 37 секунд (11.04.2008 - 18:00) NRG написал(а):
http://php.ru/manual/function.mail.html

в вашем случае внимание нужно обратить на кодировку, которую вы должны передавать в заголовках

Спустя 19 часов, 29 минут, 19 секунд (12.04.2008 - 13:30) andrew_3db написал(а):
Цитата(NRG @ 11.4.2008, 15:00) [snapback]36906[/snapback]
http://php.ru/manual/function.mail.html

в вашем случае внимание нужно обратить на кодировку, которую вы должны передавать в заголовках


Делаю так:
Код
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=koi8-r' . "\r\n";
$to = "milo@milo.ru";
$theme = substr(htmlspecialchars(trim($_POST['theme'])), 0, 255);
$mes = substr(htmlspecialchars(trim($_POST['mes'])), 0, 10000);
mail($to,$theme,$mes);

Но эффекта 0. Может я чего неправильно написал?
В аутлуке, если при прочтении письма поставить кодировку "Кириллица(windows)" вместо "Кириллица(KOI8-R)", то все читается, но проблема в том, что ее приходиться менять при прочтении каждого письма.

Если я правильно понял, то на сервере письма хранятся в кодировке win-1251, а аутлук выдает письма в KOI8-R по умолчанию. Верно?
Значит нужно либо чтоб на сервере все хранилось в кодировке KOI8-R, либо аутлук настроить на win-1251. Так?

Спустя 54 секунды (12.04.2008 - 13:31) andrew_3db написал(а):
Два раза ответилsmile.gif

Спустя 36 минут, 26 секунд (12.04.2008 - 14:07) Sylex написал(а):
а страница где форма, в какой кодировке??

Спустя 1 час, 58 минут, 15 секунд (12.04.2008 - 16:05) andrew_3db написал(а):
Цитата(Sylex @ 12.4.2008, 11:07) [snapback]36945[/snapback]
а страница где форма, в какой кодировке??

charset=windows-1251

Спустя 18 минут, 4 секунды (12.04.2008 - 16:23) servok написал(а):
Попробуй так $sms = convert_cyr_string($sms, 'w', 'k');
Это с моего сайта, там при поступлении заказа мне смс приходит, тоже была проблема с кодировкой.
Какая буква соответствует какой кодировке(2-3 параметры):
* k - koi8-r
* w - windows-1251
* i - iso8859-5
* a - x-cp866
* d - x-cp866
* m - x-mac-cyrillic
2й параметр - из какой кодировки
3й параметр - в какую кодировку

Спустя 48 минут, 48 секунд (12.04.2008 - 17:12) andrew_3db написал(а):
Цитата(servok @ 12.4.2008, 13:23) [snapback]36948[/snapback]
Попробуй так $sms = convert_cyr_string($sms, 'w', 'k');
Это с моего сайта, там при поступлении заказа мне смс приходит, тоже была проблема с кодировкой.
Какая буква соответствует какой кодировке(2-3 параметры):
* k - koi8-r
* w - windows-1251
* i - iso8859-5
* a - x-cp866
* d - x-cp866
* m - x-mac-cyrillic
2й параметр - из какой кодировки
3й параметр - в какую кодировку


ДА, получилось! Спасибо огромное smile.gif

Спасибо всем, кто помогал.

Спустя 1 час, 35 минут, 43 секунды (12.04.2008 - 18:48) evgenijj написал(а):
В явном виде русский текст в заголовке присутствовать не должен, поэтому для того, чтобы включить его туда, этот текст предварительно нужно закодировать. Стандарты описывают способ кодирования "запрещенных" символов. Общий формат выглядит так:

Код
=?кодировка?способ кодирования?закодированный текст?=

Кодировка может быть любой из списка "windows-1251", "koi8-r", "utf-8" и т.д. Во всех случаях, как правило, кодировка сообщения будет совпадать с кодировкой в которой работает сайт. То есть в большинстве случаев это будет "windows-1251", реже — "utf-8".

Способ кодирования указывает на то, каким именно образом русские символы будут преобразованы в безопасный набор. Способа определяется два: так называемый "quoted printable encoding" (обозначается одной буквой "Q") и "Base64 encoding" (обозначается одной буквой "B").

Код
$subject = "=?windows-1251?b?" . base64_encode($_POST["subject"]) . "?=";
$sender = "=?windows-1251?b?" . base64_encode($_POST["username"]) . "?= <" . $_POST["email"] . ">";

Подробности здесь:
Как грамотно отправлять почту из скриптов

Спустя 2 года, 3 месяца, 10 дней, 5 часов, 43 минуты, 25 секунд (23.07.2010 - 00:31) Гость_Татьяна написал(а):
Ребята, спасибо огромное! Ваш пост мне тоже помог smile.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.