簡體   English   中英

使用帶有 php imap 的消息 ID 獲取 email?

[英]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 UIDMessage Sequence Number也足夠了。

我想到的另一種方法是通過使用imap_search()搜索具有相同主題的郵件(在從中剝離“Re:”等之后)來實現這一點,但我認為這不是理想的。

誰能給我有關如何解決這個問題的有用指示? 提前致謝

一些 IMAP 服務器將允許您按 Message-ID 搜索( SEARCH HEADER Message-ID string ),但很多服務器軟件似乎執行得很差。

通常,無法通過消息 ID header 獲取消息。 大多數客戶端下載所有消息的標頭(包括 Message-ID),存儲它們,然后對它們進行后處理,根據ReferencesIn-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.

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