What you want is multipart mime email. If their mail reader supports the mime standards, it will display the text only part if they want text, and the html part if their reader is html capable. (This is normally a big if, but it seems to be well supported in practice. And it looks all pretty in Outlook to pass the Business Unit test.)
It's something like (from one of our templates):
From: W3 Data <firstname.lastname@example.org>
Content-Type: multipart/alternative; boundary="_jkkdsffds32432dlkjifew
Subject: BatchAppend411 Job Confirmation
Content-Type: text/plain; charset="iso-8859-1"
... Text email content ...
Content-Type: text/html; charset="iso-8859-1"
... more html content
The 'boundary' is just an arbitrary string that won't appear in the email.