0

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

这是我的代码的一部分:

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。

请帮助我?:)

4

1 回答 1

1

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

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

如果您返回了多个日期,$date则将是一个数组 ref,您可以通过以下方式访问 Date 的第一次出现:

$date->[0];

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

于 2009-08-14T07:57:50.057 回答