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 = $_;
    }
}

今私が必要としているのは、各電子メールに対して1つの日付だけを取得することですが、そのループは私にすべてを与えます。しかし、ループを削除すると、エラーが返されます。私はPerlを使用しています。

親切に助けてくれませんか?:)

4

1 に答える 1

1

MboxParser::Email doc によると、次のことができるはずです。

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

複数の日付が返された場合$dateは、配列参照になり、次の方法で最初に出現した日付にアクセスできます。

$date->[0];

したがって、ヘッダーをループして正規表現を使用する必要はありません。

于 2009-08-14T07:57:50.057 に答える