Почему неверная кодировка у отправителя письма?

в файле .env ларавеля есть константа
MAIL_FROM_NAME="Имя_отправителя_русскими_буквами"

При отправке почты
Mail::send('emails.test', $data['content'], function($message) use ($data)
        {
            $message->from(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME'));
            $message->to($data['to']);
            $message->subject($data['subject']);
        });


в почтовый ящик приходит письмо, в котором ОТ КОГО приходит каракулями:
?������� �������� ������?

Подскажите, как подправить кодировку?
не могу понять, почему такое, если файл .env в UTF-8 же?
  • Вопрос задан
  • 83179 просмотров
Пригласить эксперта
Ответы на вопрос 3
@notwrite
Нелатинские символы во from надо кодировать в base64 с указанием кодировки
Ответ написан
Комментировать
wisgest
@wisgest
Не ИТ-специалист
Например, письмо от Toster о вашем вопросе имеет заголовок
From: "Тостер – вопросы и ответы" <notifications@toster.ru>

при этом если письмо сохранить в файл и открыть в текстовом редакторе, то этот заголовок выглядит как
From: =?utf-8?B?0KLQvtGB0YLQtdGAIOKAkyDQstC+0L/RgNC+0YHRiyDQuCDQvtGC0LLQtdGC?=
 =?utf-8?B?0Ys=?= <notifications@toster.ru>

(на самом деле здесь заголовок разбит на две строки из-за ограничения на длину строки в почтовом сообщении, но, насколько я могу судить, оно не слишком строгое и письмо бы дошло и если бы это было одной строкой).

Попробуйте подобным образом закодировать "Имя_отправителя_русскими_буквами" непосредственно в файле .env
или «на лету» при вызове $message->from() (похоже, используется base64).
Ответ написан
Комментировать
Я всегда пишу так
Mail::send('email.users',  function ($message) use ($email) {
            $message->from(env('MAIL_ADMIN', env('MAIL_FROM_NAME')), 'Спасибо за заказ');
            $message->to($email, 'Сообщение о заказе')->subject('Сообщение о заказе');
        });

и все отображается нормально без всяких кодировок
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы