This is about how I do it, too. I have one suggestion-- make sure that the html message string has no newlines in it.
I don't remember which ones (maybe hotmail??), but some mailreaders display the html of multipart messages with a really screwy layout if there are newlines in there. So, s/\n\t//g is your friend. (If you're getting the text of the mail from folks who write it up in M$ products, like Word, then you want to expand that regex to strip out more characters-- Word puts in funky ^M's and stuff that you'll want to remove as well.)
-- cat