2009-08-14 1 views
0

これは簡単な質問です。私は小さなプログラムをここには は、プログラムによって指定されたユーザーアカウントの特定の受信トレイ内の電子メールのリストを読み取るがあります。 ユーザー名、パスワード、およびホストを使用してアカウントにアクセスできます。唯一の問題は、これらのメールのそれぞれに日付を取得する方法がわかりません。PerlのMail :: MboxParser :: Mailを使用してメールの日付を取得するにはどうすればよいですか?

ここに私のコードの一部です:

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を使用しています。

親切にお手伝いしますか? :)

答えて

1

MboxParser::Emailドキュメントによると、あなたが行うことができるはず:

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

あなたが戻っ複数の日付を持っている場合は、$dateは配列リファレンスになり、あなたは日の最初の出現にアクセスすることができます

$date->[0]; 

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

関連する問題