Mail :: POP3Client下载最新的电子邮件?

时间:2012-08-07 10:49:51

标签: perl email pop3

我正在使用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 /此模块,如果不是,我可以使用什么呢?

1 个答案:

答案 0 :(得分:1)

这应该有很多帮助 - http://www.ietf.org/rfc/rfc1939.txt。我没有看到任何关于按日期排序的信息,或者关于那件事的任何关于排序的事情。

我开发了一个必须处理大量邮件的IMAP解决方案。由于无法限制结果,我不得不用大量的id填充数组,然后以块的形式迭代数组。当我开发这个解决方案时,POP是不可靠和缓慢的。 IMAP绝对不是完美的,但用它开发比流行更流畅。

由于您说处理那么多数据,我只会从邮箱中提取所有数据,然后按日期对其进行排序并将其限制在Perl中。