Template::Toolkit to insert the data into an HTML template, MIME::Lite to email the result. Easy-peasy.
in reply to How to send nicely formatted emails in Perl?
For bonus points, you can create two separate templates, one for plain-text and the other for HTML, run both of them through TT, then use M::L to send it as a multipart email so that people who don't care about the color can see "just the facts, ma'am." Personally, I've never had issues with spam filters but, if you do, sending as multipart instead of HTML-only has the additional benefit of appearing to make the message look less spammy to most filter rulesets.