2015-07-20 71 views
1

我有這樣的代碼它完美....我唯一的問題是imap_setflag_full($imap,$i, "\\Seen");所看到的標誌似乎並沒有被設置..PHP IMAP - imap_setflag_full

$imap = imap_open("{mail.xyz.com:993/imap/ssl/novalidate-cert}INBOX", "username", "pass");  
    $message_count=2; 
     for ($i = 1; $i <= $message_count; ++$i) { 
      $header = imap_header($imap, $i); 
      $body = trim(substr(imap_body($imap, $i), 0, 1000)); 
      $prettydate = date("jS F Y", $header->udate); 
      echo "<pre>".print_r($header)."</pre>"; 
      if (isset($header->from[0]->personal)) { 
       $personal = $header->from[0]->personal; 
     } else { 
      $personal = $header->from[0]->mailbox; 
     } 

     $email = "$personal < ".$header->from[0]->mailbox."@".$header->from[0]->host." >"; 
     echo "On $prettydate, $email said \"$body\".\n <BR>"; 
     imap_setflag_full($imap,$i, "\\Seen"); // Set the flag "Seen" 
    } 

    imap_close($imap); 

我打印頭在我嘗試設置標誌並且不顯示之後。然而,如果我累imap_setflag_full($imap,$i, "\\Flagged");被標記的測地儀將是F,如果把imap_clearflag_full($imap,$i,'\\Flagged') F將被刪除...唯一的問題是SEEN和UNSEEN ...任何幫助表示讚賞。

感謝

回答

0

建議:使用返回的消息

  • 開始追趕IMAP協議的陣列的IMAP功能

    1. 開始返回的值,看是否有錯誤。
    2. 嘗試切換到UID將是我的最後一個建議。

    我有同樣的問題,我在消息號與消息UID混合,這就是爲什麼看不見(總是)設置。這似乎不是你的情況。

    $mbox = imap_open ($account, $user, $pwd); 
    if($mbox !== false) { 
        $numMsg = imap_num_msg ($mbox); 
        $msgs = imap_search($mbox, 'UNSEEN', SE_UID); 
    
        // Go through ALL emails. 
        foreach ($msgs as $msguid) { 
        $msgno = imap_msgno ($mbox, $msguid); 
        $header = imap_headerinfo($mbox, $msgno); 
        if($header === false) { 
         ... log error 
        } 
        $email = imap_body ($mbox, $msgno); 
    
        // Mark as Read 
        $result = imap_setflag_full($mbox, $msguid, "\\Seen", ST_UID); 
        if($result === false) { 
         ... log error 
        } 
    
        } 
        imap_close ($mbox); 
    }