Why can't I pipe the output of uuencode to mailx in a single Perl open statement?
-
22-09-2019 - |
Question
Here's my code that is not working:
print "To: "; my $to=<>; chomp $to;
print "From: "; my $from=<>; chomp $from;
print "Attach: "; my $attach=<>; chomp $attach;
print "Subject: "; my $subject=<>; chomp $subject;
print "Message: "; my $message=<>; chomp $message;
my $mail_fh = \*MAIL;
open $mail_fh, "uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";
print $mail_fh $message;
close($mail_fh);
The mailx command works fine off the command line, but not in this Perl script context.
Any idea what I'm missing?
I suspect that this line's format/syntax:
open $mail_fh, "uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";
is the culprit.
Solution
You just need an extra |
at the beginning:
open $mail_fh, "|uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";
OTHER TIPS
Do you really want to use external binaries for either the uuencode or the mailx bit? UUencode is almost trivial with pack.
There are other ways to send mail. See the How do I send mail? in perlfaq9.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow