2012-08-07 8 views
1

간략하게하기 위해 Mail::POP3Client을 사용 중이며 최신 n 개의 메시지 (내 코드에는 5 개)의 헤더를 가져 오려고합니다. 이것은 웹 스크립트 일 것이고 페이지에 최신 5 개의 이메일이 다운로드되어 파싱됩니다 (그들의 주체와 발신자) 하지만 지금은 최신 5 대신에 7 월부터 여러 가지 이메일을 받았습니다 (나는 많은 이메일을 받았습니다. 7 월 이전에도). 분명히 my $email_count = $pop->Count;은 단지 count이고 인덱스 유형 값이 아닌 것 같습니다.Mail :: POP3Client 다운로드 최신 n 전자 메일?

for (my $i = $email_count; $i >= $email_count-5; $i--) { 
    foreach ($pop->Head($i)) { 
     if (/^(From):\s+/i) { $FROM = $_; } 
     if (/^(Subject):\s+/i) { $SUBJECT = $_; } 

     if (/^(Date):\s+/i) { 
      $TIME = $_; 
      $TIME =~ s/Date: (.*)/$1/; 

      my $tstamp = str2time($TIME); 
#   $TIME = $tstamp; 
      $TIME = scalar localtime($tstamp); 

      my @fromsubj; 
      $fromsubj[0] = $FROM; 
      $fromsubj[1] = $SUBJECT; 
      $subject{$TIME} = [@fromsubj]; 
     } 
    } 


    print "Index: $i \n"; 
    } 
print Dumper(%subject); 
print "\n"; 
print Dumper(%from); 

print "Mails $email_count to ".($email_count-5); 

출력 :

Index: 4030 
Index: 4029 
Index: 4028 
Index: 4027 
Index: 4026 
Index: 4025 

$VAR1 = 'Thu Jul 26 09:01:07 2012'; 
$VAR2 = [ 
      'From: Person one ', 
      'Subject: Fwd: test ' 
     ]; 
$VAR3 = 'Tue Jul 24 15:09:43 2012'; 
$VAR4 = [ 
      'From: person two ', 
      'Subject: subj ' 
     ]; 
(And so on) 
.... 
Count 4030 4020 

가 어떻게 최신 이메일 당겨 할 수 있습니까? POP /이 모듈을 사용할 수 있습니까? 그렇지 않다면 대신 사용할 수 있습니까?

+0

나는 시간 소인별로 분류 할 수있는 방법이 있다고 확신하지만 제한 할 길이 없다. 또한 가능한 경우 IMAP을 사용하는 것이 좋습니다. 그것은 내 경험에서 훨씬 더 신뢰할 수 있습니다. – thealexbaron

+0

나는 POP를 사용했지만 사서함은 어쨌든 특정 목적을 위해 작게 유지되었습니다. – Recct

+0

기본적으로 메시지를 반환하는 순서를 알 수 있습니까? 나는 그것이 날짜다고 생각할 것이다. – thealexbaron

답변

1

이것은 많은 도움이 될 것입니다 - http://www.ietf.org/rfc/rfc1939.txt. 나는 거기에 날짜별로 정렬하는 것에 관해서 아무것도, 또는 그 문제에 관해서는 전혀 정렬에 관해서는 아무것도 보지 않을 것이다.

많은 양의 메일을 처리해야하는 IMAP 솔루션을 개발했습니다. 결과를 제한 할 수있는 방법이 없기 때문에 많은 양의 ID가있는 배열을 채운 다음 배열을 청크로 반복해야했습니다. 이 솔루션을 개발할 때 POP는 신뢰할 수없고 느려졌습니다. IMAP은 분명 완벽하지는 않지만 개발은 POP보다 훨씬 부드럽습니다. 당신은 당신이 그 많은 데이터를 처리 하지이야 말할 것 때문에

, 난 그냥 날짜별로 다음 정렬 사서함에서 모든 데이터를 끌어와 펄을 제한 할 것입니다.

+0

네, 그게 내가 한 짓을, POP는 많은 이메일로 내 상자에 dodgy했지만 내 펄 스크립트는 이메일을 삭제하고 어쨌든 DB에 구문 분석 된 데이터를 넣습니다. POP라고하면 모듈을 의미하지만 Thunderbird와 같은 적절한 클라이언트는 모든 것이 원활하게 보이도록하기 위해 많은 노력을 기울이고 있습니다. – Recct

관련 문제