Вы можете использовать выходные буферы. Если у вас есть HTML-страница, например:
<html>
<head>
<title>Blah</title>
</head>
<body>
Some text here
</body>
</html>
Тогда, если вы положите, вверху HTML-файла:
<?php ob_start(); ?>
А справа внизу, после последнего тега, поставить:
<?php
$string = ob_get_contents();
//do whatever you need to do to the html, save it to a seperate file, email it, etc
ob_flush();
?>
В сущности это означает, что переменная $ string в итоге будет содержать весь статический html страницы после ее динамического генерирования. Затем вы можете использовать эту строку в электронном письме. Хотя на самом деле HTML-страницы не работают точно так же в электронных письмах, поэтому вы можете переосмыслить подход.