include()
не возвращает содержимое файла. он выполняет файл. Это означает, что любой код PHP внутри файла выполняется, и любой «голый» html выводится клиенту. Единственное, что возвращает include () - это значение true / false, указывающее успех / неудачу.
Это плохой дизайн, но вы бы хотели что-то вроде этого:
ob_start();
include('email/template.html');
$email_text = ob_get_clean();
mail('email@gmail.com', 'subject', $email_text, ....);
Функции буферизации вывода захватят «выходные данные» включения и вернут его в переменную $ email_text, которую вы затем передаете в функцию mail ().
обратите внимание, что этот метод требуется, только если вы хотите, чтобы страница .html выполнялась как PHP. Если это действительно простой HTML, вы можете использовать вместо него file_get_contents (), что сохранит вам последовательность синтаксического анализа / компиляции / выполнения PHP.