I think it's really an HTML issue. For example, your final HTML would be like this:
<html>
<head>...</head>
<body>
{ user's header }
{ email body }
{ user's footer }
</body>
</html>
Assuming your header / footer does not have <html>, <body>, and <head> tags, you could simply
put place-markers in your HTML message, such as "USER_HEADER" and "USER_FOOTER", and then
do a string-replace of those markers with the content of the header/footer, and then set the HTML body
to the resultant string.
However, if you simply add the raw HTML text to the message body, all seems OK.
for example:
nFile = FreeFile
Open "c:\tmp\footer.htm" For Input As #nFile
sFooterText = Input(LOF(nFile), 1)
Close #nFile
sMsgBody = sMsgBody & sFooterText
mW.SetHtmlBody sMsgBody
i originally thought that by simply appending the HTML, it would get messed up due to the fact
that the message text would have multiple <html><head><body> type tags etc. but it seems to get
sent fine, and the generated .eml seems ok when viewed too.