如何使用Perl的Mail :: MboxParser :: Mail获取电子邮件的日期?

时间:2009-08-14 07:10:39

标签: perl mbox

这是一个简单的问题。我这里有一个小程序可读 程序指定的用户帐户的特定收件箱中的电子邮件列表。 我可以使用其用户名,密码和主机访问帐户。唯一的问题是我不知道如何在每封邮件上获取日期。

以下是我的代码的一部分:

my $pop = new Mail::POP3Client(  
 USER     => $user, #some user,password & host assigned
 PASSWORD => $pass,
 HOST     => $host );

for( $i = 1; $i <= $pop->Count(); $i++ ) {

    @header  = $pop->Head($i);
    @body    = $pop->Body($i);

    $mail = new Mail::MboxParser::Mail(\@header, \@body);
    $user_email =  $mail->from()->{email

    print "Email:".$user_email; #this prints out right

    foreach( $pop->Head( $i ) ) {
            /^(Date):\s+/i && print $_, "\n";
            $date = $_;
    }
}

现在我需要的是每封电子邮件只有一个日期, 但那个循环给了我所有..但是当删除循环时,它 返回错误。我正在使用Perl。

请帮助我? :)

1 个答案:

答案 0 :(得分:1)

根据MboxParser::Email doc,您应该能够:

$date = $mail->header->{'date'}; #Keys are all lowercase

如果您返回的日期不止一个,$date将是一个数组参考,您可以通过以下方式访问日期的第一个日期:

$date->[0];

因此,您不需要遍历标头并使用正则表达式。