Is that the output from the "print @body" line? Because that will only print 4000 characters (unicode) / 8000 characters non-unicode. There's more about the limitations of the T-SQL PRINT command on MSDN.
As for the selective formatting of the first line - I assume you mean the first returned line of data? There are a couple of options:
1. change the SELECT statement that generates the data set so that it also returns a ROW_NUMBER or similar id field; put some additional code in the outer SELECT to check for that value being '1', and, if so, put in appropriate HTML formatting stuff. (If you're on SQL 2005, this might be a bit trickier to do...)
2. add another step to the REPLACE to look at the body text between the first <tr> / </tr> pair, again, adding formatting at this point.