花了好長時間才讓它運作,最後才想起我以唯讀模式開啟了信箱 - 顯然設定旗標需要寫入權限!
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_setflag_full — 設定訊息的旗標
使郵件儲存區將指定的 flag
加入指定 sequence
中郵件的旗標集合。
imap
一個 IMAP\Connection 實例。
sequence
郵件序號序列。您可以使用 X,Y
語法枚舉所需的郵件,或使用 X:Y
語法擷取區間內的所有郵件。
flag
您可以設定的旗標有 \Seen
(已讀)、\Answered
(已回覆)、\Flagged
(已標記)、\Deleted
(已刪除)和 \Draft
(草稿),如 » RFC2060 中所定義。
options
一個位元遮罩,可以包含單個選項
ST_UID
- sequence 參數包含的是 UID 而不是序號
永遠返回 true
。
如果 options
無效,則拋出 ValueError。
版本 | 說明 |
---|---|
8.1.0 | imap 參數現在需要一個 IMAP\Connection 實例;以前需要一個有效的 imap 資源。 |
8.0.0 | 現在,如果 options 參數值無效,則會拋出 ValueError。以前,會發出警告並返回 false 。 |
範例 #1 imap_setflag_full() 範例
<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password")
or die("無法連線: " . imap_last_error());
$status = imap_setflag_full($mbox, "2,5", "\\Seen \\Flagged");
echo gettype($status) . "\n";
echo $status . "\n";
imap_close($mbox);
?>
如果可以,我會避免使用 POP3 帳號。我的主機允許我升級到 IMAP,而且它容易使用多了。我認為用 POP3 準確建立任何形式的郵件客戶端的唯一方法是將訊息下載到 SQL 資料庫中,這是一項艱鉅的任務,尤其考量到 IMAP 標準內建了我們所需的功能。
我試驗了 POP3 中的旗標設定,它們似乎根本不會保留,而且幾乎不可能取得未讀訊息的數量(例如,已讀/未讀的功能無法運作)
轉換到 IMAP 後就正常運作了 - 本節中的大多數函式似乎都以 IMAP 為主,而且通常無法與 POP3 搭配使用