Bueno, de donde estan definidas las varibles que sacas con el echo en mensaje.php. Si se definen antes en el script que tiene el email, tienes que hacer el include() con el ob_start(). Si las defines dentro del propio mensaje.php, quizas haciendo file("http://www.tusitio.com/mensaje.php") sirve.
Pero tampoco creo que sea muy largo el metodo de epplestun:
Código PHP:
ob_start();
include("mensaje.php");
$mensaje = ob_get_contents();
ob_end_clean();
mail("","", $mensaje,"cabecera");
Son 4 lineas. Y encima cortitas.
Otra solucion seria que meterias todo lo que es la generacion del HTML de mensaje.php dentro de una funcion que devolviese el codigo HTML (en lugar de echo añadirlo en una variable). Pero supongo que lo habras hecho asi para poder usar un editor HTML para crear el mensaje.
Prueba el codigo que te doy y nos cuentas.
Suerte.