Кириллица в функции mail в PHP

| 4 |

Бывает, когда делаешь простенькую форму обратной связи для сайта и непременно пользуясь функцией mail(), в который раз забываешь, а как же правильно отправить заголовки, чтобы кириллица во всех браузерах и почтовых клиентах отображалась правильно?

Для этого нужно немного. Вот, например, такой кусочек кода:

    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $to = 'name@mail.domain'; 
    $subject = 'На сайте заполнена контактная форма ';    
    $body ="От: $name\n E-Mail: $email\n Текст:\n $message";
    $subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
    $headers.="From: mypost@mail.domain\nReply-To: no-reply@mail.domain\r\n";
    $headers.="Content-type: text/plain; charset=UTF-8\r\n";
    $headers.="Content-transfer-encoding: quoted-printable";
    
    if (mail ($to, $subject, $body, $headers)) {
     $result='<div class="alert alert-success">Спасибо! Ваше письмо отправлено</div>'; 
    } else {  
     $result='<div class="alert alert-danger">Что-то не так... Попробуйте позже</div>';
    }

Думаю, стоит ещё напомнить, раз в этом кусочке кода упоминается кодировка utf-8, то и файл с кодом должен быть в этой кодировке.

Если вам понравился или пригодился текст, вы всегда можете отблагодарить!

Пожертвовать мне на кофе 3USD:

4 комментария

  1. Тарас says:
    03.02.2016 в 17:32

    Дякую, чувак! А то я довго з тим мудохався!

  2. Ихтиандр says:
    02.11.2018 в 20:00

    Спасибо! Реально помогло!

  3. Павел says:
    12.07.2019 в 23:46

    Норм написал спасибо, у кого ошибки, то в первой переменной ($headers.=”From)
    уберите точку перед .= в остальных не трогайте и вместо переменной ($result='<div) поставьте (echo '<div) у кого она не выводиться. понятно что без (скобок пишем)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *