in reply to Email form

I always use Mail::Sendmail for the purpose of sending mail. Easy to use, works great.

As far as generating the HTML, for this you can probably just embed entire web pages into heredocs, so that your web pages are *almost* static, but then you can just interpolate any particulars you need. That technique will not be adequate for more complicated purposes, when the page needs to be more fully dynamic, but here you've basically only got two or three pages: a form for the user to fill in, a "sent" message, and possibly a "failed" message. They don't need to change much, other than (say) interpolating an error message.

Update: Be sure to hardcode the To: address, so that spammers can't abuse your script to send to arbitrary recipients.