![](/img/trans.png)
[英]How to Fetch Particular part of email body using PHP(imap function)?
[英]Fetch email using message id with php imap?
我正在開發一個小型網絡郵件應用程序,我需要做的是像 Gmail 那樣處理電子郵件。
我計划通過獲取郵件的“ references
”(使用uid
)然后將它們顯示為一個線程來實現它。 我得到這樣的參考:
$inbox = imap_open("{imap.example.org:143}INBOX", "username", "password");
$email_number = imap_msgno($inbox,$uid);
$overview = imap_fetch_overview($inbox,$email_number,0);
$mess = $overview[0];
$refs = array_filter(explode(' ', htmlentities($mess->references)));
$refs
數組是Message-Id's
數組,誰能告訴我如何根據Message-Id
獲取郵件。
如果我可以從Message-Id
獲得Message UID
或Message Sequence Number
也足夠了。
我想到的另一種方法是通過使用imap_search()
搜索具有相同主題的郵件(在從中剝離“Re:”等之后)來實現這一點,但我認為這不是理想的。
誰能給我有關如何解決這個問題的有用指示? 提前致謝
一些 IMAP 服務器將允許您按 Message-ID 搜索( SEARCH HEADER Message-ID string
),但很多服務器軟件似乎執行得很差。
通常,無法通過消息 ID header 獲取消息。 大多數客戶端下載所有消息的標頭(包括 Message-ID),存儲它們,然后對它們進行后處理,根據References
和In-Reply-To
標頭將它們與其他消息匹配。 但是:如果您使用的是 Gmail,您可以使用它的擴展來獲取 Gmail 的內部線程 ID,他們稱之為X-GM-THRID
。
這對我有用:
$result = imap_search($imapResource, "TEXT \"<mymessageid@host.com>\"", SE_UID);
if(is_array($result) && count($result) == 1){
echo $result[0];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.