Por que não consigo canalizar a saída do uuEncode para o Mailx em uma única instrução Open Perl?

StackOverflow https://stackoverflow.com/questions/2519074

Pergunta

Aqui está o meu código que não está funcionando:

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);

O comando Mailx funciona bem na linha de comando, mas não neste contexto de script Perl.

Alguma ideia do que estou perdendo?


Eu suspeito que o formato/sintaxe desta linha:

open $mail_fh, "uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to";

é o culpado.

Foi útil?

Solução

Você só precisa de um extra | no inicio:

open $mail_fh, "|uuencode $attach $attach |mailx -m -s \"$subject\" -r $from $to"; 

Outras dicas

Você realmente quer usar binários externos para o bit uuencode ou o Mailx? Uuencode é quase trivial com pacote.

Existem outras maneiras de enviar e -mails. Veja o Como faço para enviar e -mail? dentro Perlfaq9.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top