Заметки
print_r показывает имя отправителя, но скрывает email
В поле отправителя лежит строка Иван Иванов <ivan@example.com>, а print_r в браузере показывает только имя. Почтовый модуль мог ничего не потерять: браузер интерпретирует угловые скобки как разметку.
Для проверки экранируйте строку перед выводом в HTML:
$s_from = 'Иван Иванов <ivan@example.com>';
echo '<pre>';
echo htmlspecialchars($s_from, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
echo '</pre>'; Для массива применяется тот же порядок: сначала print_r($ar_fields, true), затем htmlspecialchars. Сам тег <pre> сохраняет пробелы, но не отключает разбор HTML.
Экранирование нужно здесь для отображения. Оно не разбирает адрес отправителя и не должно менять исходное значение, которое сохраняется в почтовой системе.
В текстовом CLI такого эффекта нет. Поэтому при расхождении вывода полезно сравнить исходный ответ и то, как его нарисовал браузер.
Документация: htmlspecialchars.