2012-01-18 6 views
2

PHP의 IMAP 클래스를 사용하여 내 사서함을 통해 전자 메일을 가져 오려고합니다. 메시지 수가 수천에 달하기 때문에 스크립트가 너무 오래 실행됩니다.PHP로 일괄 적으로 전자 메일 가져 오기

각 메시지마다 100 개의 메시지를 검색 할 수있는 방법이 있습니까?

또한 어떻게 메시지를 고유하게 식별 할 수 있습니까? 그것입니까 * message_id * 또는 UID? imap_fetch_overview() 먼저

/* grab emails */ 
$emails = imap_search($inbox,'ALL'); 

/* if emails are returned, cycle through each... */ 
if($emails) { 

    /* begin output var */ 
    $output = ''; 

    /* put the newest emails on top */ 
    rsort($emails); 

    /* for every email... */ 
    foreach($emails as $email_number) { 

     /* get information specific to this email */ 
     $overview = imap_fetch_overview($inbox,$email_number,0); 
     $message = imap_fetchbody($inbox,$email_number,2); 

     /* output the email header information */ 
     $output.= '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">'; 
     $output.= '<span class="subject">'.$overview[0]->subject.'</span> '; 
     $output.= '<span class="from">'.$overview[0]->from.'</span>'; 
     $output.= '<span class="date">on '.$overview[0]->date.'</span>'; 
     $output.= '</div>'; 

     /* output the email body */ 
     $output.= '<div class="body">'.$message.'</div>'; 
    } 

    echo $output; 
} 
+0

이 메시지를 가져올 코드를 표시 할 수 있습니까? – klennepette

+0

@klennepette 나는이 davidwalsh.name/gmail-php-imap을 따르고있다. – Ankit

+0

그래, 여전히 코드를 게시 할 수 있겠는가? 정말 도움이된다. 또한 itap은 느린가, 아니면 for 루프를 지나고 있는가? – klennepette

답변

0

에, 나는 UID 사서함에서 유일한 고유의 message_id 메시지에 대한 고유 식별자입니다 생각합니다.

성능은. 가장 좋은 추측은 for 루프가 느린 루프 일 것입니다. for 루프는 수천 개의 메일을 전체 메일 본문을 가져옵니다. imap_searchON <date> 또는 UNSEEN으로 제한 할 수 있습니다. 자세한 내용은 here을 참조하십시오.

또는 일반 for 루프를 사용하여 한 번에 100 개의 메시지 만 처리하도록 루프를 다시 작성할 수 있습니다.

관련 문제