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.

Was it helpful?

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
scroll top