Perché non posso inviare l'output di uuencode per mailx in una singola istruzione aperta Perl?
-
22-09-2019 - |
Domanda
Ecco il mio codice che non funziona:
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);
Il comando mailx funziona benissimo dalla linea di comando, ma non in questo contesto script Perl.
Qualche idea di cosa mi manca?
Ho il sospetto che il formato / la sintassi di questa linea:
open $mail_fh, "uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";
è il colpevole.
Soluzione
Hai solo bisogno di un |
in più all'inizio:
open $mail_fh, "|uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";
Altri suggerimenti
Vuoi veramente usare i binari esterni sia per l'UUENCODE o il bit mailx? UUencode è quasi banale con imballare .
Ci sono altri modi per inviare la posta. Vedere la Come posso inviare la posta? in perlfaq9 .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow