I changed the type to text/plain and used join("\n", @msg_body) and this resulted in a literal "\n" being stuck between each element. It's not reading the line returns as line returns...any ideas?
doh, I figured it out immediately. I was using '\n' instead of double quotes, so of course it wasn't reading them as line returns.
Everything works great now, thanks for the help. As always I'm indebted to the monks...