Uuencode exibindo o conteúdo do anexo no corpo do email

0

Estou usando o uuencode com o mailx para anexar um arquivo zip. No código a seguir, o bloco if funciona perfeitamente e recebo Deletions.zip como um anexo no email. Mas, sempre que o bloco else é executado, não obtenho o anexo, mas o código binário no corpo do email.

Código (código Perl chamando comandos linux):

open(EF,'>', "/test/emailbody.txt") or die $!;
if ($#dzones != -1) {
        unshift @dzones, "Following files have 20% or more deletions --\n\n";
        unshift @dzones, "Start time: $localtime\n\n";
        my $localtime = scalar localtime();
        push @dzones, "End time: $localtime\n\n";
        print EF @dzones;
        'cd /test/DOUT/; zip -q9 /tmp/deletions.zip ./*.*';
        '(cat /test/emailbody.txt;uuencode /tmp/deletions.zip Deletions.zip) | mailx -s "Device deletions" vishal\@test.com';
} else {
        push @dzones, "No files have more than 20% deletions.\n\nPlease see attached for the deletions in different zones.\n\nThanks, Vishal\n\n";
        print EF @dzones;
        'cd /test/DOUT/; zip -q9 /tmp/deletions.zip ./*.*';
        '(cat /test/emailbody.txt;uuencode /tmp/deletions.zip Deletions.zip) | mailx -s "Device deletions" vishal\@test.com';
}
close(EF);

Quando outro bloco é executado, tudo que eu obtenho é:

begin 644 Deletions.zip
M4$L#!!0''@'('.U6,D4]>N/[=0$''&@&'''D'!4'9&5L7VYE7T%L8F5R=&%?
… [snip] …
+'"H+''"R''''''''
'
end

O que estou fazendo de errado?

    
por Vishal 18.09.2014 / 17:33

1 resposta

1

Parece que o problema causador está sendo causado durante o loop de cat /test/emailbody.txt;

Remova o "," ao imprimir no arquivo. A seguinte linha de código tem esse problema:

push @dzones, "No files have more than 20% deletions.\n\nPlease see attached for the deletions in different zones.\n\nThanks, Vishal\n\n";

    
por 18.09.2014 / 19:35