2012-04-16 22 views
1

imap_search関数を使用して、IMAPサーバ上のメッセージを検索する方法はありますか?それらの間ではありませんPHPマニュアル、imap_search検索オプションの限られた数を許可し、UIDで検索によると: だから、http://us.php.net/manual/en/function.imap-search.phpPHPのimap_searchに基づくメッセージUID

、UID(提供UIDより高い)に基づいてメッセージを取得するには、道の周りにあります。これは、IMAP4プロトコルの改訂版(2003年以来のことだと思います)の後にサポートされるべきです。

答えて

0

あなたは広範な検索を行い、最終的にここに着陸したと確信しています。それに直面することはできません。この機能の回避策があります。

たぶん、あなたはこのようなコードを利用することができます

$imap_stream = imap_open($mailbox, $username, $password); 
$msg_no = 1212; //lets say momentarily 
while(imap_fetchheader($imap_stream, $msg_no)){ 
    //do some processing 
    $msg_no++; 
}// loop will continue till there is no more of newer messages 

あなたは、反復の特定の数の仕事をするためのループのために取ることができるように、これは最大実行時間を引き起こす可能性があることに注意してください。

$imap_stream = imap_open($mailbox, $username, $password); 
$msg_no = 1212; //lets say 
for($i=0;$i<=50;$i++){ 
if(imap_fetchheader($imap_stream, $msg_no)){ 
    //do some processing 
} 
$msg_no++; 
} // this will go for 50 times 
+0

このコードでは、メッセージシーケンス番号が使用され、メッセージが削除または移動されると変更される可能性があります。したがって、$ msg_noを最後に処理したメッセージとして保存すると、5つのメッセージが削除され、次の5つのメッセージが欠落します。最後のメッセージからメッセージを取得するだけの場合は、そのUIDを保存してから '$ msg_no = imap_msgno($ imap_stream、$ lastUID);を実行する必要があります。 –

+0

@ CodeBaller合意した –

関連する問題