I do not want to discourage your attempt but our company uses the same BS with the result,
that it is typically ignored - like those flickering ADs one learns to ignore after some time.
So pardon me for sounding sunny, but there are a few more things to consider.
Your matches are too specific. They seem to fit just for the few examples you've provided. When you going down this path, use loads of test automation.
What you need is a parser that splits the email into its components, detecting header and body for each component (header and body are separated by at least one empty line - your matches might trigger within a header and corrupt the whole thing).
You already handling text and HTML formats, however, producing valid HTML would need you to inject your message somewhere after the <body> tag. Take additonal care not to mess up encrypted or signed parts of the mail.
There might be a suitable library in the MIME:: section of CPAN that could support you more reliably.
Perhaps MIME::Fast or MIME::Tools?