2011-07-15 44 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); 

腳本加載到無窮遠的時間。

imap_search UNSEEN解決方案不好,因爲pop3不使用此標誌。 那我該怎麼辦?????? 非常感謝。

+0

我使用的POP3訪問 – michele

+0

這是問題: http://stackoverflow.com/questions/4119402/how-to-find-only-new-messages-when-using-phps-imap - 功能爲pop3-mailbo – michele

回答

5

有兩路,你可以遵循:

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的標誌,您可以使用它來搜索未讀電子郵件。你會調用imap_search功能與看不見的標誌,像這樣:

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

如果您需要將此與更多的搜索標誌結合使用,例如,從我@例如搜索消息。COM,你可以這樣做:

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

有關可用標誌的完整列表,請參閱imap_search手冊頁的PHP網站上的標準部分(www.php.net/imap_search)

來源:http://www.electrictoolbox.com/php-imap-unread-messages/

+0

但是在imap_search之後,如何打印郵件? – michele

+0

imap_search回報我所有的電子郵件,但只有一個未經審查!爲什麼???? – michele

+0

因爲UNSEEN意味着未經修補? – Tarik

3

這是在谷歌一個艱難的一個:php imap unread

的第一個結果:

有一個叫UNSEEN標誌,你可以用它來搜索未讀電子郵件。您可以使用UNSEEN標誌調用imap_search函數,如下所示: view sourceprint?

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

如果您需要將此與更多的搜索標誌結合使用,例如搜索從[email protected]的消息,你可以這樣做: 觀點sourceprint?

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

有關可用標誌的完整列表,請參閱imap_search手冊的標準部分的PHP網站(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

Ok $ after = imap_search($ connection,'UNSEEN');我怎樣才能打印郵件? – michele