← К заметкам

Заметки

Тему письма в mail() нужно кодировать отдельно

Content-Type: text/plain; charset=UTF-8 задаёт кодировку тела письма. Русская тема находится в заголовке Subject и требует отдельной обработки, если вы отправляете письмо напрямую через PHP mail().

С расширением mbstring тему можно подготовить так:

$subject = 'Заявка обновлена';
$encoded_subject = mb_encode_mimeheader($subject, 'UTF-8', 'B', "\r\n");

Передайте $encoded_subject вторым аргументом mail(). Не собирайте длинную тему одним Base64-блоком вручную: у MIME-заголовков есть ограничения длины и правила переноса строк.

Если отправкой занимается библиотека или почтовый механизм Битрикса, сначала выясните, кодирует ли он заголовки сам. Повторное кодирование тоже испортит тему.

Значение темы из внешнего источника не должно содержать CR/LF. И отдельно: успешный mail() подтверждает передачу письма транспорту, а не доставку адресату.

Документация: PHP: function.mb-encode-mimeheader.php.