PHP → Отправка письма в UTF-8

24.02.2010
function mail_utf8($to, $from, $subject, $message)
{
    $subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
    
    $headers  = "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-type: text/plain; charset=utf-8\r\n";
    $headers .= "From: $from\r\n";
    
    return mail($to, $subject, $message, $headers);
}

// пример использования
mail_utf8('to-user@gmail.com', 'no-reply@example.ru', 'Заголовок сообщения', 'Текст сообщения');
Похожие записи

Комментарии

Игорь
27.10.2013, 21:35

$headers .= "From: $from\r\n";
Прям так? Не
$headers .= "From:". $from."\r\n";
?

Так это одно и тоже!
И я всегда пишу вторым методом, чтобы переменная подсвечивалась в редакторе (у меня синим) - так её видно хорошо, а не серым в тексте, да ещё и напрягать мозг: какие я там кавычки использую, а то в одинарных переменная не превратится в своё содержимое, а так и выведется как $from. А люблю одинарные...)))
только во второй строке вы не добавили пробел: $headers .= 'From: '. $from."\n";
А в конце двойные опять, а то перевод строки не сработает. Наверное достаточно юниксовского, а не видовского?
xandeadx - я же прав?
Чета меня сегодня прет на комменты...)))

Лучше всего использоваться библиотеку PHPMailer. Через неё очень удобно отправлять письма, особенно добавлять вложения

Гость
16.12.2016, 16:30

Спасибо. Очень помогло. Спам фильтр не пропускал письма ни на один из сервисов, пока не прописал данную функцию.

Павел
01.05.2020, 16:57

Спасибо за свежую мысль!
Возможно ли решить проблему корректной кодировки текста писем с помощью Вашей функции без переделки всего сайта под кодировку utf-8 (очень бы не хотелось, сайт сделан на кодировке cp_1251)?
php 5.4.45

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