Форум → Программирование → PHP для идиотов → Русские символы не отображаются в письме, отправленным php-скриптом
Русские символы не отображаются в письме, отправленным php-скриптом
-
Всем привет!
Я очень плохо знаю php. Практически не знаю. Очень прошу объяснять подробно.
Сайт выполнен в кодировке iso-8859-5. Менять ее крайне нежелательно.
вот часть скрипта:
<?
$tomail = "…";
$subject = "….";
$message = "Name: $name
Email: $email
Company name…..
……";
mail($tomail,$subject,$message,"Content-Type: text/html; charset=Utf-8"); #пробовал разные кодировки и разные почтовые ящики#
?>
Результат один и тот же- все, что было введено на русском превращается в "????????". Англ. буквы и цифры отображаются нормально.
И еще один вопрос)
В моей форме есть пункт, где нужно выбрать из списка один или более элементов.
На почту приходит лишь нижний элемент. Что делать? -
23 сентября 2007 г. 20:21, спустя 17 минут 18 секунд
1. http://ru.php.net/manual/ru/function.convert-cyr-string.php
2. http://ru.php.net/variables.external (Пример 12-10. Более сложные переменные формы) -
23 сентября 2007 г. 21:28, спустя 1 час 6 минут 34 секунды
Второй пример не понял, а первый понял не до конца. Получается, что мне нужно конвертировать строку, например, из iso-8859-5 в windows-1251. А где в моем скрипте строка? Т.е. куда вставить эту команду..) Понимаю, что вопрос звучит глупо, но я с php сталкиваюсь первый раз- не знаю ни синтаксиса, ни общих правил, но скрипт очень нужен. -
24 сентября 2007 г. 0:34, спустя 3 часа 5 минут 59 секунд
тебе нужно сконвертировать $subject, $message
хотя с $subject-ом отдельные грабли, почитай здесь http://forum.pyha.ru/topic/50.0 -
24 сентября 2007 г. 1:28, спустя 54 минуты 19 секунд
С темой письма проблем нет, т.к. она на английском.
Вот так примерно получается?:
<?
$tomail = "…";
$subject = "….";
$message = "Name: $name
Email: $email
Company name…..
……";
$message = "convert_cyr_string ( $message, i, w )";
mail($tomail,$subject,$message,"Content-Type: text/html; charset=windows-1251");
?>
p/s: спасибо за помощь! -
25 сентября 2007 г. 0:17, спустя 22 часа 48 минут 22 секунды
Нашел расширенный вариант этой ф-ии и сконвертировал заголовок, кот. теперь на русском. Все получилось!
$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "i","k")).'?=';
Потом то же проделал с $message и на почту пришло "=?koi8-r?B?TmFtZTogDQpFbWFpbDogDQpDb21wYW55IG5hbWU6IA0KTmFtZSw……"
$message = '=?koi8-r?B?'.base64_encode(convert_cyr_string($message, "i","k")).'?=';
Почему так? -
25 сентября 2007 г. 1:10, спустя 53 минуты 4 секунды
c message так делать не надо, просто конвертни его в нужную кодировку, как и раньше. -
25 сентября 2007 г. 16:38, спустя 15 часов 28 минут 34 секунды
Раньше я $message не конвертировал. Как это сделать правильно? -
25 сентября 2007 г. 17:12, спустя 33 минуты 18 секунд
$message = convert_cyr_string ( $message, i, w ); -
25 сентября 2007 г. 17:46, спустя 34 минуты 43 секунды
На mail.ru все приходит! Оказалось, что играет роль и почтовая программа (или вариант, когда почту проверяют через сайт провайдера)..
Вот рабочий скрипт:
<?
$tomail = "[email protected]";
$subject = "Можно на русском!";
$subject = '=?koi8-r?B?'.base64_encode(convert_cyr_string($subject, "i","k")).'?=';
$message = "
/Name: $name <br>
/Email: $email <br>
"
;
$message = convert_cyr_string ( $message, "i","k");
mail($tomail,$subject,$message, "Content-Type: text/html; charset=koi8-r");
?>
Огромне спасибо, ghost!!!
Пожалуйста, авторизуйтесь, чтобы написать комментарий!