簡體   English   中英

IMAP:PHP:如何獲取和存儲用於刪除特定郵件的郵件號

[英]IMAP : PHP : How can I get and store message number for deleting a particular mail

我必須使用IMAP閱讀服務器郵件收件箱,然后必須在網站中為管理員顯示一些郵件(具有預定義內容的郵件),稍后管理員可以從管理面板中刪除或轉移郵件,但是如何刪除或轉移郵件來自管理面板的特定郵件? 有什么方法可以在郵件中存儲消息ID? 如何在收件箱中獲取特定郵件的ID?

非常感謝您的時間

在IMAP中,沒有存儲消息號這樣的東西,因此我假設您用口語來表示唯一標識消息的任何數字。 如果我對這個假設是正確的,那么您就不走運了:也沒有這樣的數字,至少在整個IMAP會話中也沒有。

您可以嘗試以下操作:IMAP協議要求每個消息都具有唯一的標識符,並且每個郵箱都具有唯一的標識符有效值 郵件郵箱的唯一標識符唯一標識符有效性值的組合保證不會引用不同的消息。 因此,如果使用它來標識消息,則至少可以保證不會意外刪除錯誤的消息。

問題是, 唯一標識符有效性值僅在IMAP會話期間被保證保持不變。 PHP通常會為每個頁面請求創建一個新的IMAP會話,並在請求結束時關閉該會話。 另一方面,IMAP規范建議,即使跨會話,唯一標識符也保持不變。 這使以下方法顯得可行:

  1. 通過唯一標識符來標識消息(例如,通過將它們用作用於選擇消息的復選框的值屬性)。
  2. 將郵箱的唯一標識符有效性值存儲為表單中的隱藏字段。
  3. 處理表單提交時,請檢查通過表單提交的唯一標識符有效性值是否與當前表單相同。
  4. 注意 :有些IMAP服務器對每個會話使用不同的唯一標識符有效性值 如果碰巧有這樣的實現,您將無能為力。

您可以通過調用imap_mailboxmsginfo獲得當前的唯一標識符有效性值 PHP的IMAP擴展中的大多數其他函數都有一個參數$options ,您可以使用該參數指定您使用的是唯一標識符而不是消息序列號 (識別消息的另一種方法,它比唯一標識符更具可變性)。

有關IMAP協議(尤其是2.3.1消息號)的詳細信息,請參閱RFC 3501

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM