Если вы используете OctoberCMS 4.0.2 и отправляете email-сообщения на кириллице, то при наличии HTML-разметки в теле письма может возникнуть проблема: вместо читаемого текста получатель видит кракозябры (неправильная кодировка).
Это связано с тем, что HTML содержимое неправильно парсится и сохраняется в DOMDocument без нужной конвертации в UTF-8.
В библиотеке ParsedownExtra, которую использует OctoberCMS для обработки Markdown, отсутствует явное указание на кодировку при загрузке HTML. Это происходит в файле:
vendor/october/rain/src/Parse/Parsedown/ParsedownExtra.php
Строка, вызывающая проблему:
$DOMDocument->loadHTML($elementMarkup);
Необходимо заменить строку 630 на следующую:
$DOMDocument->loadHTML(mb_convert_encoding($elementMarkup, 'HTML-ENTITIES', 'UTF-8'));
Таким образом, перед загрузкой HTML будет выполнена корректная конвертация кодировки, и письма на кириллице будут отображаться корректно.
К слову, это же решение предлагается на StackOverflow — даже в строке 629 исходного файла есть соответствующий комментарий, но, по какой-то причине, само преобразование не применяется.
Если вы не хотите редактировать файлы в vendor/, создайте собственную обёртку или форк ParsedownExtra и подключите её через ServiceProvider. Но для быстрой отладки — правка одной строки даёт мгновенный эффект.
PR в либу Октября уже отправлен. Ждём одобрения. На связи.