我正在使用Mail::POP3Client来简化它,并希望提取最新n
消息的标头(我的代码中为5)。
这将是一个webscript和页面加载最新的5个电子邮件下载和解析(他们的主题和发件人)
但现在的方式是从7月份开始收到各种各样的电子邮件,而不是我最近的5封电子邮件(7月之前我也收到了很多电子邮件)。显然my $email_count = $pop->Count;
只是计数而不是索引类型值?
for (my $i = $email_count; $i >= $email_count-5; $i--) {
foreach ($pop->Head($i)) {
if (/^(From):\s+/i) { $FROM = $_; }
if (/^(Subject):\s+/i) { $SUBJECT = $_; }
if (/^(Date):\s+/i) {
$TIME = $_;
$TIME =~ s/Date: (.*)/$1/;
my $tstamp = str2time($TIME);
# $TIME = $tstamp;
$TIME = scalar localtime($tstamp);
my @fromsubj;
$fromsubj[0] = $FROM;
$fromsubj[1] = $SUBJECT;
$subject{$TIME} = [@fromsubj];
}
}
print "Index: $i \n";
}
print Dumper(%subject);
print "\n";
print Dumper(%from);
print "Mails $email_count to ".($email_count-5);
输出:
Index: 4030
Index: 4029
Index: 4028
Index: 4027
Index: 4026
Index: 4025
$VAR1 = 'Thu Jul 26 09:01:07 2012';
$VAR2 = [
'From: Person one ',
'Subject: Fwd: test '
];
$VAR3 = 'Tue Jul 24 15:09:43 2012';
$VAR4 = [
'From: person two ',
'Subject: subj '
];
(And so on)
....
Count 4030 4020
我如何才能提取最新的电子邮件?是否可以使用POP /此模块,如果不是,我可以使用什么呢?
答案 0 :(得分:1)
这应该有很多帮助 - http://www.ietf.org/rfc/rfc1939.txt。我没有看到任何关于按日期排序的信息,或者关于那件事的任何关于排序的事情。
我开发了一个必须处理大量邮件的IMAP解决方案。由于无法限制结果,我不得不用大量的id填充数组,然后以块的形式迭代数组。当我开发这个解决方案时,POP是不可靠和缓慢的。 IMAP绝对不是完美的,但用它开发比流行更流畅。
由于您说不处理那么多数据,我只会从邮箱中提取所有数据,然后按日期对其进行排序并将其限制在Perl中。