2009-08-14 5 views
0

C'est une question simple. J'ai un petit programme ici qui lit une liste de courriels dans une boîte de réception spécifique d'un compte d'utilisateur spécifié par le programme. Je peux accéder à un compte en utilisant son nom d'utilisateur, mot de passe et hôte. Le seul problème est que je ne sais pas comment obtenir la date sur chacun de ces mails.Comment puis-je obtenir la date d'un courriel en utilisant Mail :: MboxParser :: Mail de Perl?

est ici une partie de mon code:

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

Maintenant, ce que j'ai besoin est d'obtenir la seule date pour chaque e-mail, mais cette boucle me donne tout .. mais quand retirer la boucle, il renvoie une erreur J'utilise Perl.

Veuillez m'aider? :)

Répondre

1

Selon MboxParser::Email doc, vous devriez être en mesure de le faire:

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

Si vous avez plus d'une date de retour, $date sera une référence à un tableau et vous pouvez accéder à la première occurrence de la date avec:

$date->[0]; 

Vous ne devriez donc pas avoir à parcourir l'en-tête et utiliser une expression régulière.

Questions connexes