Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/58: Рейтинг темы: голосов - 58, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 20.05.2013
Сообщений: 10
1

Из формы отправки сообщения на e-mail приходят "иероглифы"

02.04.2014, 07:17. Показов 12139. Ответов 5
Метки нет (Все метки)

Добрый день.
Отправляя письмо из формы отправки со своего сайта, на e-mail адресату приходят непонятные символы.
Во многих статьях пишут, что дело в кодировке. Однако я проверил кодировку в обоих файлах: html-файл заполнения формы и php-файл передачи данных на e-mail.
В обоих файла кодировка utf-8 без BOM.
Ниже прикрепляю коды обоих файлов и результат, который приходит на e-mail.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Форма оформления заказа</title>
</head>
<body>
<form action="formdata.php" method="POST" name="form1":>
 
<p><label> Введите Ваше имя<input type="text" name="name" size="30" maxlength="20"><label></p>
<p><label> Введите номер Вашего телефона<input type="text" name="phone" size="30" maxlength="20"><label></p>
<p><label> Введите номер выбранного Вами аксессуара (указан рядом с ценой)<input type="text" name="acss" size="5" maxlength="5"><label></p>
<p><label> Введите адрес, где Вам будет удобно получить товар (доставка осуществляется бесплатно практически во все районы города)<input type="text" name="address" size="40" maxlength="50"><label></p>
<p><label for="text">Здесь вы можете написать Ваши пожелания по заказу:</label></p>
<p><textarea name="text" cols="50" rows="6"></textarea></p>
<p><input type="reset" name="reset" value="Сбросить все введенные данные">
<p><input type="image" src="images/ibutton.png" name="imagebutton"</p>
</form>
</body>
</html>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Обратная связь</title>
</head>
<?php
/* Осуществляем проверку вводимых данных и их защиту от враждебных 
скриптов */
$name = htmlspecialchars($_POST["name"]);
$phone = htmlspecialchars($_POST["phone"]);
$acss = htmlspecialchars($_POST["acss"]);
$address = htmlspecialchars($_POST["address"]);
/* Устанавливаем e-mail адресата */
$myemail = "cases174@mail.ru";
/* Проверяем заполнены ли обязательные поля ввода, используя check_input 
функцию */
$name = check_input($_POST["name"], "Пожалуйста, введите Ваше имя!");
$phone = check_input($_POST["phone"], "Укажите, пожалуйста, номер Вашего телефона! (Нужен, для того чтобы мы могли связаться с Вами).");
$acss = check_input($_POST["acss"], "Пожалуйста, введите номер выбранного Вами аксессуара (указан рядом с ценой, написан синими цифрами. Пример: #0000");
$address = check_input($_POST["address"], "Укажите, пожалуйста, адрес Вашего местонахождения, чтобы мы могли знать, куда нужно доставить Ваш заказ");
/* Создаем новую переменную, присвоив ей значение */
$message_to_myemail = "Здравствуйте! 
Вашей контактной формой было отправлено сообщение! 
Имя отправителя: $name
Телефон: $phone
Выбранный аксессуар: $acss
Адрес: $address
Пожелания к заказу: $text
Конец";
/* Отправляем сообщение, используя mail() функцию */
$from  = "From: $yourname <$email> \r\n Reply-To: $email \r\n"; 
mail($myemail, $tema, $message_to_myemail, $from);
?>
<p>Ваше сообщение было успешно отправлено!</p>
<p>На <a href="index.html">Главную >>></a></p>
<?php
/* Если при заполнении формы были допущены ошибки сработает 
следующий код: */
function check_input($data, $problem = "")
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<p>Пожалуйста, исправьте следующую ошибку:</p>
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
0
Миниатюры
Из формы отправки сообщения на e-mail приходят "иероглифы"  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2014, 07:17
Ответы с готовыми решениями:

При отправке данных с формы на почту, из-за Jquery, там где type="password" приходят не символы, а "****"
&lt;!DOCTYPE html &gt; &lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt; ...

В заголовке сообщения приходят иероглифы
Всем привет, столкнулся с такой проблемой: При открытии письма в самом заголовке иероглифы Вот...

Форма отправки сообщения: не срабатывает кнопка "Отправить"
привет всем! помогите, пожалуйста, с такой проблемой: есть код формы для отправки данных, при...

дата и время получения/отправки сообщения в БД "Почта"
Как сделать, что бы при отправке/получении сообщения отображались дата и время ?

5
3 / 13 / 3
Регистрация: 09.11.2013
Сообщений: 77
02.04.2014, 07:24 2
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

у вас должна быть кодировка utf-8 где находится php скрипт
0
59 / 56 / 22
Регистрация: 15.12.2009
Сообщений: 231
Записей в блоге: 1
02.04.2014, 16:22 3
PHP
1
2
 $from  =  "From: $yourname <$email> \r\n Reply-To: $email \r\n"
          ."Content-Type: text/html; charset=\"utf-8\"\r\n";
0
6 / 6 / 4
Регистрация: 31.01.2014
Сообщений: 44
02.04.2014, 17:10 4
Да, нужно вместе с письмом отправлять заголовок
PHP
1
"Content-Type: text/html; charset=\"utf-8\"\r\n";
указывающий на то, в какой кодировке отправляется письмо
0
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 959
02.04.2014, 23:08 5
вот рабочий скрипт
PHP
1
2
3
4
5
6
7
8
        $tema = "тема сообщения";
        $massage = "текст сообщения";
        $to = "кума";
        $from = "от кого";
        $subject = $tema;
        $subject = "=?utf-8?b?".base64_encode($subject)."?=";
        $headers = "From: $from\r\nReply-to:$from\r\nContent-type:text/html;charset=utf-8\r\n";
        mail($to, $subject, $massage, $headers);
0
Не мoдepaтор
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,032
Записей в блоге: 7
03.04.2014, 03:09 6
Вообще такие вещи нужно делать более серьезно, вы ведь не "вконтактике" переписываетесь, а принимаете/отправляете заказы - используйте класс "PHPMailer".
Можете использовать готовую форму, там реализация на аякс, может найдете для себя ещё что нибудь полезное.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2014, 03:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

При отправке данных с input type="password" на почту, приходят только "*****"
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;...

Из формы заказа на сайте, на почту приходят иероглифы
Добрый день! При заполнении формы заказа на сайте, на почту приходят вместо русских букв иероглифы....

Из формы POST в БД приходят иероглифы, ничего не помогает
Пробовал iconv, mysql_query('set character_set_client=&quot;utf8&quot;'), mysql_query('set...

Редирект после отправки "Формы обратной связи"
В общем есть форма обратной связи нужно что бы после нажатия кнопки &quot;отправить&quot; юзера перекидывало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.