Perl を使用してメッセージを読み、添付ファイルを探して保存しています。添付ファイルは常にバイナリ PDF ドキュメントであり、複数の添付ファイルが存在することはありません。件名を読み、添付ファイル (存在する場合) を確認して保存し、メッセージを一時保管用のフォルダーにコピーする必要があります。
読み取り、印刷、コピー機能はすべて動作します。MIME::Parser (MIME::Tools がインストールされています) でさまざまなシナリオを試しましたが、空白のファイルまたは 1 文字または 2 文字のファイルが表示されます。また、盲目的に .pdf に名前を変更するのではなく、ファイル拡張子を決定/設定する方法も知りたいです。
#!/usr/bin/perl
use Net::IMAP::Simple::SSL;
use Email::Simple;
use MIME::Parser;
print "Content-type: text/html\n\n";
$server = new Net::IMAP::Simple::SSL('xxx');
$server->login('xxx','xxx');
my $folder='inbox';
my ($unseen, $recent, $total) = $server->status($folder);
my $newm = $server->select('INBOX');
my $tmp=($total-9); #limit for testing
my $outputdir = "./temp";
my $parser = new MIME::Parser;
$parser->output_dir($outputdir);
for (my $i = $tmp; $i <= $total; $i++) {
if ($server->seen($i)) {
print "Message #$i has been seen before...<br />";
} else {
my $es=Email::Simple->new(join '', @{$server->top($i)});
print $es->header('Subject')." on ";
print $es->header('Date')."<br />";
print "You've just seen message #$i<br />" if $server->see($i)."<br />";
$msg = $server->get($i);
$parser->parse_data($msg);
$server->copy($i,'dump');
}
}
$server->quit();
exit;
エラー
parse_data: 間違った引数参照タイプ: Net::IMAP::Simple::_message at mailextract.pl 行 x