2011-07-15 14 views
1

私はPHPのimapクラスを使用しています。 私の箱にはたくさんのメールがありますが、このスクリプトでは未読メールだけを取得します。 どうすればいいですか?PHP未読メール数を表示する

if ($mbox=imap_open("{" . $mailserver . ":" . $port . "}INBOX", $user, $pass)) 
{ 
    echo "Connected\n"; 
} else { exit ("Can't connect: " . imap_last_error() ."\n"); echo "FAIL!\n"; }; 

if ($hdr = imap_check($mbox)) { 
    $msgCount = $hdr->Nmsgs; 
    echo "Ci sono ".$msgCount." mail"; 
} else { 
    echo "Failed to get mail"; 
} 

私は無限の時間に

$overview=imap_fetch_overview($mbox,"1:$msgCount",0); 

スクリプトのロードを行う場合。

pop3がこのフラグを使用しないため、imse_search UNSEENソリューションはうまくいかない。 どうすればいいですか? ありがとうございました。

+0

私はこれが問題であるPOP3アクセス – michele

+0

を使用しています: http://stackoverflow.com/questions/4119402/how-to-find-only-new-messages-when-using-phps-imap -functions-for-a-pop3-mailbo – michele

答えて

5

あなたが続くことができる2つの方法があります:

1.メッセージをループが

$count = imap_num_msg($connection); 
for($msgno = 1; $msgno <= $count; $msgno++) { 

    $headers = imap_headerinfo($connection, $msgno); 
    if($headers->Unseen == 'U') { 
     ... do something ... 
    } 

} 

2. imap_searchの使用

未読メールの検索に使用できるUNSEENというフラグがあります。あなたはそのようUNSEENフラグでimap_search関数を呼び出します。

$result = imap_search($connection, 'UNSEEN'); 

あなたは例@私からのメッセージを検索例えば、複数の検索フラグと組み合わせる必要がある場合。利用可能なフラグの完全なリストについては

$result = imap_search($connection, 'UNSEEN FROM "[email protected]"'); 

、PHPのウェブサイトにimap_searchマニュアルページの基準セクションを参照してください(www.php.net/imap_search)

:COM、あなたはこれを行うことができます出典:http://www.electrictoolbox.com/php-imap-unread-messages/

+0

しかし、imap_searchの後にメールを印刷するにはどうしたらいいですか? – michele

+0

imap_searchは私にすべての電子メールを返しますが、未読のメッセージは1つだけです!なぜ???? – michele

+0

UNSEENはUNREADEDという意味ですか? – Tarik

3

これは、Googleで厳しいものだった:あなたが未読の検索に使用することができますUNSEENと呼ばれるフラグがあります

php imap unread

最初の結果電子メール。 UNSEENフラグを指定してimap_search関数を呼び出すと、 sourceprintが表示されますか?

$result = imap_search($connection, 'UNSEEN'); 

あなたは[email protected]からのメッセージを検索例えば、複数の検索フラグでこれを結合する必要がある場合は、あなたがこれを行うことができます: ビューsourceprintを?利用可能なフラグの完全なリストについては

$result = imap_search($connection, 'UNSEEN FROM "[email protected]"'); 

、PHPのウェブサイトにimap_searchマニュアルページの基準セクションを参照してください(www.php.net/imap_search)

編集私はこれを元々IMAPとして読んでいました。 #失敗します。

グーグル:php pop3 unread

第二リンク:

function CountUnreadMails($host, $login, $passwd) { 
     $mbox = imap_open("{{$host}/pop3:110}", $login, $passwd); 
     $count = 0; 
     if (!$mbox) { 
      echo "Error"; 
     } else { 
      $headers = imap_headers($mbox); 
      foreach ($headers as $mail) { 
       $flags = substr($mail, 0, 4); 
       $isunr = (strpos($flags, "U") !== false); 
       if ($isunr) 
       $count++; 
      } 
     } 

imap_close($mbox); 
return $count; 
} 
+0

いいえ解決策はありません....スクリプトはまだロードされています結果は次のとおりです。30秒の最大実行時間は – michele

+0

を超えましたか?一番?第二?どちらも? – sdolgy

+0

$ result = imap_search($接続、 'UNSEEN')の後のOk。どうすればメールを印刷できますか? – michele

関連する問題