2012-04-27 56 views
2

我需要: 我想在我的GMail帳戶(或任何其他電子郵件服務)中獲取未讀電子郵件的數量,並且在得到該數據後,我需要將其顯示在網頁中在我的本地PHP服務器上。所以我需要一種腳本語言,那就是PHP。但我嘗試了很多例子,但似乎沒有一個可行。所以基本上我想要的是一個PHP腳本,可以訪問我的GMail帳戶並將未讀電子郵件的數量返回到網頁使用PHP獲取未讀電子郵件數

我試過這個腳本是徒勞的,它總是在我的網頁上一直顯示「錯誤」。

<?php 

function CountUnreadMail($host, $login, $passwd) { 
    $mbox = imap_open($host, $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; 
} 

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; 
$username = 'username'; 
$password = 'password'; 

$count = CountUnreadMail($hostname, $username, $password); 

?> 

由於Chris幫助,我會嘗試這個劇本,但我唯一看到的是一個空白頁。這裏是另一個腳本,我妄圖:

<?php 

function mailCount($host, $login, $passwd) { 
    $mbox = imap_open($host, $login, $passwd); 
    $mail = ''; 

    if($mail = imap_check($mbox)) { 
     return $mail->Nmsgs; 
    } 
} 

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; 
$username = 'phpimap123'; //GMail username 
$password = 'phptesting'; //Password 

$count = mailCount($hostname, $username, $password); 

echo $count; 

? 

PS:我已經做了一個Gmail帳戶測試目的

我在MacBook Air上運行Mac OS X Lion。 PHP啓用並運行,我也有MAMP,它也在運行。

回答

0

嘗試if ($mbox === FALSE)

更換if (!$mbox)你應該做一個特定類型的檢查,這是不好的做法,以這種方式來測試手柄。

此外,請嘗試通過gmail.com登錄到您的帳戶。您可能有太多無效嘗試,並且Gmail希望您先輸入驗證碼,但無法通過IMAP完成。

2

如果通過IMAP這樣做,爲什麼你不只是使用:

function mailCount($host, $login, $passwd) 
{ 
    $mbox = imap_open($host, $login, $passwd); 
    $mail = ''; 

    if($mail = imap_check($mbox)) 
    { 
     return $mail->Nmsgs; 
    } 
} 

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; 
$username = 'username'; 
$password = 'password'; 

$count = mailCount($hostname, $username, $password); 

這會給你的未讀的郵件數。

+0

我會在哪裏放置我的帳戶詳細信息(密碼和用戶名) – hatimbt 2012-04-27 05:50:15

+0

這將按照您現在的操作完成。我在那裏添加了$ mbox變量,就像你擁有它一樣。繼續,只需在if()語句上方輸入您的$ mbox連接代碼即可。如果您願意,隨意也可以將登錄憑據添加到該功能中。我更喜歡將這些東西構建到類中,並將所有這些數據發送到構造函數中,但無論您感到舒服,都可以。:) – ChrisG 2012-04-27 05:52:37

+0

那麼請把這些代碼粘貼到這裏。我真的很陌生。 – hatimbt 2012-04-27 05:56:35

0
$inbox = imap_open($hostname,$username,$password,OP_READONLY) or die('Cannot connect to Gmail: ' . imap_last_error()); 
$unread = count (imap_search($inbox, 'UnSeen'));

imap_check會給你:日期,驅動程序,郵箱,Nmsgs,最近Nmsgs =總的消息,最近 =這不是未讀郵件數,但最近的)

相關問題