2012-11-14 40 views
0

我已經連接到IMAP電子郵件帳戶的功能(目前使用Gmail測試)來獲取是UNSEEN電子郵件。獲取電子郵件通過他們我環路,做imap_fetch_overview()imap_fetchbody()每個電子郵件之後。我可以從電子郵件設置停止imap_search爲READ

這個函數運行所有已搜索獲取設置在收件箱中來讀取郵件後。

反正有沒有阻止這種情況發生?理想情況下,我希望郵件保持UNSEEN。

這裏是我的功能

function build_email_data(){ 

    $this->connect(); 

    /* grab emails */ 
    $emails = imap_search($this->inbox,'UNSEEN'); 

    /* if emails are returned, cycle through each... */ 
    if($emails) { 

     /* put the newest emails on top */ 
     rsort($emails); 

     $data = array(); 

     /* for every email... */ 
     foreach($emails as $email_number) { 

      /* get information specific to this email */ 
      $overview = imap_fetch_overview($this->inbox,$email_number,0); 
      $message = imap_fetchbody($this->inbox,$email_number,1); 

      $_data['subject'] = $overview[0]->subject; 
      $_data['from'] = $overview[0]->from; 
      $_data['body'] = $message; 
      $_data['owner_id'] = 1; 
      $_data['email_number'] = $email_number; 
      $_data['folder_id'] = 1; 
      $_data['created'] = timestamp_to_mysqldatetime(); 
      $_data['updated'] = timestamp_to_mysqldatetime(); 
      $_data['email_date'] = timestamp_to_mysqldatetime(strtotime($overview[0]->date)); 

      $data[] = $_data; 
     } 

     $this->disconnect(); 

     return $data; 
    } 
} 

回答

2

我想出了他們爲什麼要被設置爲READ以及如何阻止它。

$message = imap_fetchbody($this->inbox,$email_number,1); 

該代碼將消息設置爲READ。通過添加FT_PEEK作爲選項,它仍然是UNSEEN

$message = imap_fetchbody($this->inbox,$email_number,1, FT_PEEK); 
+0

再次,PEEK設置使用最近的而不是看到的標誌。除非你的服務器不符合rfc .... – Max

+1

不知道rfc complience,但從php.net - 「FT_PEEK - 不要設置\已標記的國旗,如果尚未設置」 - http://www.php.net/手動/ EN/function.imap-body.php – iamjonesy

0

你困惑UNSEEN和最近?提取的消息將清除最近的標誌,而只是改變了標誌(添加\看)應該改變SEEN標誌。

+0

Tbh我不確定RECENT標記是什麼。但在腳本運行後,我的收件箱中設置爲UNSEEN的所有郵件現在列爲正在我的收件箱中閱讀 – iamjonesy

相關問題