Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 19
1

Кодировка в теле письма при отправке

05.04.2014, 14:12. Показов 4086. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кодировка в теле письма при отправке


Добрый день. У меня следующая проблема. Я отправляю письмо с помощью скрипта через сайт. Ни с одним ящиком нет проблем однако один из пользователей ярый жесткий поклонник mail.ru почтового ящика. К нему конечно же все приходит с явными проблемами в кодировке к примеру вот
по идее в этом месте должно быть написано Имя и оно отображаться должно на русском к примеру
Имя: Иван. Форма заполняется как я уже сказал на русском через сайт. Все на utf-8 и чтобы я не пробовал не помогает нормально раскодировать сообщение.
Вот сам код

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
$name .='Content-Type: text/html; charset="utf-8"'."\n";
$name .="Content-Transfer-Encoding: 8bit\n";
if (!isset($_POST['name']) or empty($_POST['name'])) {
    $error1 = "Имя?<br />";
} else $error1 = NULL;
 
if (!isset($_POST['phone']) or empty($_POST['phone'])) {
    $error2 = "Phone?<br />";
} else $error2 = NULL;
 
if (empty($error1) and empty($error2) and empty($error3) and empty($error4)) {
    $name = $_POST['name'];
    $phone    = $_POST['phone'];
    $message = "Имя: {$name}\n\nphone: {$phone}\n\nurl:targetsite/new\n\n.url=".$_POST['url'];
 
    $to .= 'itargetmail@mail.ru';
    
 
    if (mail($to, $subject, $message)) {
        echo "Отправлено!";
    } else echo "Ошибка!";
} else {
    echo $error1.$error2.$error3.$error4;
}


что можно сделать?

Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2014, 14:12
Ответы с готовыми решениями:

Кодировка заголовка при отправке на почту письма
Доброе утро, подскажите, что не так с заголовком письма. Приходят вместо русских символов...

Кодировка письма при отправке Формой обратной связи
Добрый вечер. Нашел на просторах форума простую &quot;форму обратной связи&quot; &lt;?php /** * Класс...

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

При отправке письма тело письма $message не отображается
вот функция атачя $sfile - содержание файла function send($sfile,$filename) { $message =...

8
72 / 72 / 29
Регистрация: 10.08.2012
Сообщений: 202
05.04.2014, 14:27 2
Так пробовали?
PHP
1
$name = iconv("utf-8", "windows-1251", $name);
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 19
05.04.2014, 14:37  [ТС] 3
Спасибо за ответ но к сожалению, беда осталась та же(((( не помогает. Всеравно кодировка не та приходит.
0
72 / 72 / 29
Регистрация: 10.08.2012
Сообщений: 202
05.04.2014, 15:00 4
Ну я вот попробовал, у меня в нормальной кодировки
приходит на mail.ru, никаких кракозябр.
Может проблема на стороне вашего пользователя
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 19
05.04.2014, 15:03  [ТС] 5
Да нет я и у себя пользовался этим и с файрфокса. М а нет ли проблем на хостинге? Тоесть может проблема как раз у никхоста моего? Вы просто вверх дописали эту команду, правильно?
0
72 / 72 / 29
Регистрация: 10.08.2012
Сообщений: 202
05.04.2014, 15:16 6
Лучший ответ Сообщение было отмечено devilman666 как решение

Решение

Что-то я ступил... менять кодировку надо было не у имени, а
у сообщения, то есть у переменной $message, попробуйте так:

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
$name .='Content-Type: text/html; charset="utf-8"'."\n";
$name .="Content-Transfer-Encoding: 8bit\n";
if (!isset($_POST['name']) or empty($_POST['name'])) {
    $error1 = "Имя?<br />";
} else $error1 = NULL;
 
if (!isset($_POST['phone']) or empty($_POST['phone'])) {
    $error2 = "Phone?<br />";
} else $error2 = NULL;
 
if (empty($error1) and empty($error2) and empty($error3) and empty($error4)) {
    $name = $_POST['name'];
    $phone    = $_POST['phone'];
    $message = "Имя: {$name}\n\nphone: {$phone}\n\nurl:targetsite/new\n\n.url=".$_POST['url'];    
    $message = iconv("utf-8", "windows-1251", $message); 
 
    $to .= 'itargetmail@mail.ru';
    
 
    if (mail($to, $subject, $message)) {
        echo "Отправлено!";
    } else echo "Ошибка!";
} else {
    echo $error1.$error2.$error3.$error4;
}
1
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 19
05.04.2014, 15:25  [ТС] 7
Чуть чуть не понял. Вот сейчас у меня вот так вот

PHP
1
2
3
4
5
6
7
8
9
10
$message = iconv("utf-8", "windows-1251", $name); 
$message .='Content-Type: text/html; charset="utf-8"'."\n";
$message .="Content-Transfer-Encoding: 8bit\n";
if (!isset($_POST['name']) or empty($_POST['name'])) {
    $error1 = "Имя?<br />";
} else $error1 = NULL;
 
if (!isset($_POST['phone']) or empty($_POST['phone'])) {
    $error2 = "Phone?<br />";
} else $error2 = NULL;
0
72 / 72 / 29
Регистрация: 10.08.2012
Сообщений: 202
05.04.2014, 15:28 8
Просто прямо перед отправкой сообщения
добавьте кодировку сообщения, которое отправляете,
сообщение хранится в переменной $message.

Значит перед отправкой сообщения добавьте
$message = iconv("utf-8", "windows-1251", $message);

Примерно вот так:

PHP
1
2
$message = iconv("utf-8", "windows-1251", $message);
if (mail($to, $subject, $message)) {
Вообщем после кодировки, никаких присвоений к переменной
$message не должно быть!

Надеюсь поможет=)
0
0 / 0 / 0
Регистрация: 27.02.2014
Сообщений: 19
05.04.2014, 15:29  [ТС] 9
Получилось сделал прям один в один как у вас.
Спасибо большущее!!!!
0
05.04.2014, 15:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2014, 15:29
Помогаю со студенческими работами здесь

Неполадки с кодировкой при отправке письма
Привет всем. делаю обратную связь, она нормально работает но приходит письмо и в место букв одни...

При отправке письма с сайта, добавить логотип
Как добавить логотип к письму при отправке письма с сайта, через php...

При отправке письма, на почту приходяь иероглифы
Ф-ция mail() Вообщем поидее все просто, отправляю письмо на русскос языке, а получаю -...

Кодировка при отправке на почту
Вечер добрый, отправляю на почту письмо и летит кодировка! Я уже все перетыкал перепробовал (( &lt;?...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru