2011-03-02 36 views
1

我正在嘗試在我的頁面上執行檢查新郵件功能。 由此我的意思是檢查郵件的腳本,如果存在未讀郵件,它將通知用戶「您有一封未讀郵件」。在php中檢查未讀郵件

這可能嗎?

在此先感謝

我設法只要它的工作作爲用戶的電子郵件和密碼存儲在數據庫中的純文本。

我使用一個查詢,以從我的數據庫($電子郵件)和($密碼)檢索用戶的電子郵件地址和密碼

代碼:

$ MBOX = imap_open(」 {imap.domain.com:143/novalidate-cert}INBOX「, 」$ email「,」$ password「);

唯一的問題是我的用戶的電子郵件密碼存儲爲md5散列。

我該如何處理imap_open?

感謝

+0

什麼類型的郵件帳戶? IMAP?流行?交換?筆記?本地unix mbox? – 2011-03-02 20:07:09

+0

什麼?一臺POP3服務器? IMAP?其他一些系統?這是一個非常廣泛的問題;您應該對PHP的郵件功能進行一些研究,並在您完成一切後回來。 – 2011-03-02 20:07:32

+0

該帳戶是從我的網絡主機給出的,我有imap和pop設置。 – Dreni 2011-03-02 20:08:34

回答

3

這是可能的,如果你實現你的PHP腳本的IMAP(或POP3)客戶端。當你打開你的頁面時,PHP會連接到郵件服務器並檢查新郵件。爲了實現這一點,PHP將需要您的用戶名/密碼和服務器地址/端口。因此,這些信息必須存儲在服務器上。

http://lv.php.net/imap_mailboxmsginfo給出的例子會給你更多的提示。

+0

我怎麼能做到這一點,任何例子?謝謝 – Dreni 2011-03-02 20:06:40

+0

更新了我的回覆 – naivists 2011-03-02 20:09:51

+0

我設法讓它現在工作。非常感謝 – Dreni 2011-03-02 20:26:23

1

您需要在IMAP支持中編寫代碼,這可以使用PHP imap functions完成。儘管如此,完整的解決方案並非微不足道。

0

$hostname='{imap.gmail.com:993/imap/ssl}INBOX'; 
 
$username = '[email protected]'; 
 
$password = 'mypass'; 
 

 
$mbox = imap_open($hostname,$username,$password) or die('Cannot connect to Tiriyo: ' . imap_last_error()); 
 
$status=imap_status($mbox,$hostname,SA_ALL); 
 
if ($status) { 
 
    echo "Messages: " . $status->messages . "<br />\n"; 
 
    echo "Recent:  " . $status->recent  . "<br />\n"; 
 
    echo "Unseen:  " . $status->unseen  . "<br />\n"; 
 
    echo "UIDnext: " . $status->uidnext  . "<br />\n"; 
 
    echo "UIDvalidity:" . $status->uidvalidity . "<br />\n"; 
 
} 
 
else { 
 
    echo "imap_status failed: " . imap_last_error() . "\n"; 
 
}

$hostname='{imap.gmail.com:993/imap/ssl}INBOX'; 
$username = '[email protected]'; 
$password = 'mypass'; 

/* try to connect */ 
$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Tiriyo: ' . imap_last_error()); 
$MB = imap_search($inbox,'UNSEEN'); 
$xcount($MB); 
echo $x; 
0

如果您不能使用imap_open(擴展名未安裝,例如),您可以使用curl(例如與Gmail進行測試):

// https://support.google.com/mail/answer/7126229 [2017-10-22] 
define('URL', 'imaps://imap.gmail.com'); 
define('PORT', 993); 
define('USER', '[email protected]'); 
define('PASS', 'your_Secret_Password'); 

if ($ch = curl_init()) { 
    curl_setopt($ch, CURLOPT_URL, URL); 
    curl_setopt($ch, CURLOPT_PORT, PORT); 

    curl_setopt($ch, CURLOPT_USE_SSL, CURLUSESSL_ALL); 

    curl_setopt($ch, CURLOPT_USERNAME, USER); 
    curl_setopt($ch, CURLOPT_PASSWORD, PASS); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 

    // set IMAP command 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'STATUS INBOX (MESSAGES UNSEEN)'); 

    $res = curl_exec($ch); 
    if (curl_errno($ch)) { 
     echo 'CURL ERROR: ' . curl_error($ch); 
    } else { 
     echo trim($res); 
    } 
    echo PHP_EOL; 

    curl_close($ch); 
} else { 
    die('Curl initialization failed.'); 
} 

該腳本將返回類似於:

* STATUS "INBOX" (MESSAGES 2 UNSEEN 1) 

更多關於IMAP命令(https://www.google.com/search?q=imap+protocol+commands)[2017年10月22日]: