Uuencode는 이메일 본문에 첨부 파일 내용을 표시합니다.

Uuencode는 이메일 본문에 첨부 파일 내용을 표시합니다.

저는 zip 파일을 첨부하기 위해 uuencode와 mailx를 사용하고 있습니다. 아래 코드에서 if 블록은 완벽하게 작동하며 이메일에 첨부 파일로 Deletions.zip을 받습니다. 그러나 else 블록이 실행될 때마다 첨부 파일을 수신하는 대신 이메일 본문에 바이너리 코드가 수신됩니다.

코드(Linux 명령을 호출하는 Perl 코드):

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

else 블록을 실행할 때 내가 얻는 것은 다음과 같습니다.

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

내가 뭘 잘못했나요?

답변1

발생한 문제는 while 루프 중에 발생한 것 같습니다.cat /test/emailbody.txt;

파일로 인쇄할 때 ","를 제거하세요. 다음 코드 줄에 이 문제가 있습니다.

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

관련 정보