我正在使用 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 line x