Outputting the Message
We open the pipe to
sendmail
, then print to that filehandle by
using the print
function followed by the name of
the filehandle we want to print to (MAIL
).
(Notice, by the way, how you don’t use a comma after the name
of the filehandle. Sticking a comma there is a common mistake.)
print MAIL <<"EOF"; To: $recipient From: $sender Subject: Sample Web Form Submission $mail_body EOF
Here we are printing out some header fields that
sendmail
expects to see. We use the value from the
script’s configuration section (as stored in the
$recipient
variable) for the
To:
header, and either the value from the
configuration section, or the submitted form data we replaced it
with, for the From:
header. We print a blank line,
then finish up with the message body that was previously stored in
the $mail_body
variable.
Finally, we close the filehandle:
close MAIL or die "Can't close pipe to $sendmail: $!\n";
I threw an or die...
statement on the
close
statement, by the way, more out of habit
than because this script is ever likely to fail at that point. I
never used to bother doing the or die...
thing on
close
statements, until the day my ISP’s disk filled up and a script I had created to automatically rewrite a big chunk of my web site went happily about its business, opening filehandles to all the site’s files and printing updated content to them, then failing (silently) when it tried to close the filehandle and got a “disk full” error. The end result: a site full of empty (that ...
Get Perl for Web Site Management now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.