Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Maksimchikfull
Веб-мастер
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
1

Кодировка заголовков в mail()

29.09.2014, 16:28. Просмотров 948. Ответов 5
Метки нет (Все метки)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function NewMail($from,$to,$subject,$message) {
    $headers[] = "From: {$from}";
    $headers[] = "Subject: {$subject}";
    $headers[] = "MIME-Version: 1.0";
    $headers[] = "Content-Type: text/html; charset=\"utf-8\"";
    $headers[] = "X-Mailer: PHP/". phpversion();
    
    if(empty($from))
        return "Enter the sender!";
    else if(empty($to))
        return "Enter the recipient!";
    
    return (mail($to,$subject,$message,implode("\r\n",$headers)) ? "Mail is send" : "Unknown error");
}
 
echo NewMail(
    "Кюнрайнтл.хол.ес <mailbox@quneritle.hol.es>",
    "Александр Александрович <alexandr@mail.com>",
    "Подтверждение",
    "Подтвердите свой адрес электронной почты введя следующий код: <b>Код</b>"
);
?>
Эффект на вложении.
0
Миниатюры
Кодировка заголовков в mail()  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2014, 16:28
Ответы с готовыми решениями:

Функция mail(): Не очень понятно, как указывается e-mail отправителя. Разъясните кто-нибудь, пожалуйста.
Есть вопрос по поводу функции mail(). Не очень понятно, как указывается e-mail...

Php mail кодировка
Доброго времени суток, небольшая проблема с отправкой эмейла. Отправляю письмо...

Неправильная кодировка mail()
mail(&quot;mail@mail.ru&quot;, &quot;тема&quot;, &quot;текст сообщения&quot;); Тема приходит нормально, а...

Кодировка в сообщении mail
Выручите,пожалуйста,проблема с кодировкой в сообщении $to=...

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

5
Maksimchikfull
Веб-мастер
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
29.09.2014, 16:34  [ТС] 2
PHP
1
2
3
4
    $headers[] = 'X-Mailer: PHP/'. phpversion();
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-Type: text/html; charset="windows-1251"';
    $headers[] = 'From: '.$from;
С другой кодировкой...
0
Миниатюры
Кодировка заголовков в mail()  
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
29.09.2014, 16:35 3
Лучший ответ Сообщение было отмечено Maksimchikfull как решение

Решение

Maksimchikfull, заголовки должны содержать только семибитные символы (латиница, цифры, знаки препинания). Чтобы передавать русский текст нужно его кодировать. В вашем случае так:
=?UTF-8?B?<тут текст в кодировке UTF-8, пропущенный через функцию base64_encode>?=
1
Maksimchikfull
Веб-мастер
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
29.09.2014, 16:42  [ТС] 4
quwy, спасибо большое!

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
function NewMail($from,$to,$subject,$message,$headers = array()) {
    if(empty($from))
        return "Enter the sender!";
    else if(empty($to))
        return "Enter the recipient!";
        
    $from = Encode($from);
    $to = Encode($to);
    
    $headers[] = 'X-Mailer: PHP/'. phpversion();
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-Type: text/html; charset=utf-8';
    $headers[] = 'From: '. $from;
    
    return (mail($to,$subject,$message,implode("\r\n",$headers)) ? "Mail is send" : "Unknown error");
}
 
function Encode($value) {
    return '=?UTF-8?B?'. base64_encode($value) .'?=';
}
 
echo NewMail(
    "Кюнрайнтл.хол.ес <mailbox@quneritle.hol.es>",
    "Александр Александрович <alexandr@mail.com>",
    "Подтверждение",
    "Подтвердите свой адрес электронной почты введя следующий код: <b>Код</b>"
);
Работает отлично!
0
Maksimchikfull
Веб-мастер
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
29.09.2014, 18:12  [ТС] 5
На локальной машине теперь норм, но проблема на хостинге hostinger.
Почта приходит только в таком видео:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
function XMail($from,$to,$subject,$message,$headers = array()) {
    $headers[] = 'X-Mailer: PHP/'. phpversion();
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-Type: text/html; charset=utf-8';
    $headers[] = 'Content-Transfer-Encoding: 8bit';
    $headers[] = 'From: '. $from;
    
    return mail($to,$subject,$message,implode("\r\n",$headers));
}
 
function XMailEncode($value) {
    return '=?UTF-8?B?'. base64_encode($value) .'?=';
}
 
XMail(
    "Кюнерайтл.хол.ес <mailbox@quneritle.hol.es>",
    "Александр Александрович <maksimchik1995@yandex.ru>",
    "Test",
    "<b>:)</b>"
);
?>
При использовании XMailEncode на $from и/или на $to, почта вовсе не отправляется.
0
Миниатюры
Кодировка заголовков в mail()  
quwy
Native x86
3338 / 2184 / 650
Регистрация: 13.02.2013
Сообщений: 7,239
29.09.2014, 18:34 6
Лучший ответ Сообщение было отмечено Maksimchikfull как решение

Решение

Maksimchikfull, кодировать нужно не полностью поля From и To, а только русские подстроки. Адрес нужно оставлять таким, как был:
To: Василий Пупкин <vasya.pupkin@mail.ru>
To: =?UTF-8?B?0JLQsNGB0LjQu9C40Lkg0J/Rg9C/0LrQuNC9?= <vasya.pupkin@mail.ru>
1
29.09.2014, 18:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2014, 18:34

Кодировка в mail форме на сайте
Здравствуйте. Вот такая вот форма: &lt;?php $name = $_POST; $email =...

Слетает кодировка в From mail() на смартфоне
Здраствуйте! Почему-то кириллица отображается абракадаброй при отправке...

Кодировка при отправке писем с использованием функции mail()
Уважаемые форумчане, подскажите что мне сделать с этой непутевой функцией. ...


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

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

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