the various MIME/Email RFCs require that there be a
blank line between the last header, and the body of the email.
When you send a "manual" subscription request, your sending
mail client is most certainly doing "the right thing".
When you pass a "normal email address" to your CGI,
your recieving mail client is probably being very forgiving and
parsing the msg even without that blank line. Your mailing
list software is probably not as forgiving.
Please don't put this CGI any where on the Internet without
seriously re-writting it. putting the "to" address in a HIDDEN
form variable may seem like a good idea from a maintenance perspective,
but it will just turn your site into a massive spam relay, allowing
people to write scripts to use your CGI as a starting point
for email to any address without any accountability as to
where it orriginated from. Even if $body is
something hard coded into your script, that the CGI user
can't change, they can still use your script to flood someone's
inbox -- and you're the one that people will go after when it happens.