私は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";