El resultado del primer mensaje se debe a que el valor por defecto de @body_format es 'TEXT', esto hace que el contenido de @body se interprete como texto plano, si quieres que se interprete como html debes configurar en forma explícita @body_format= 'HTML'. Por otro lado, los mensajes vacíos en modo html se pueden dar en caso de un html mal formado dentro de @body o algún filtro en el servidor de correo. Intenta con un mensaje más simple para descartar errores de codificación, también recuerda que el tipo de @body es nvarchar.
Código:
DECLARE @mensaje NVARCHAR(MAX);
SET @mensaje =
N'<H1>titulo</H1>' +
N'<table>' +
N'<tr><th>NOMBRE</th><th>EMPRESA</th>' +
N'<th>EMAIL</th><th>SOFTWARE TRAZABILIDAD</th><th>SOFTWARE GESTIÓN</th>' +
N'<th>COMENTARIOS</th></tr>' +
N'</table>' ;
EXEC msdb.dbo.sp_send_dbmail @recipients='[email protected]',
@subject = '[CONTACTO WEB]',
@body = @mensaje,
@body_format = 'HTML' ;
Saludos