我稍微探究了這個函式的行為。
它處理 rfc882 欄位
日期
主旨
訊息 ID
收件者
寄件者
回覆地址
寄件人 - 如果標頭中沒有,將使用「寄件者」欄位產生
標頭
參考
回覆
副本
不處理 rfc882 欄位
退信地址
已接收
轉寄 - 我認為這個欄位可能已經過時
關鍵字
如果有其他 rfc822 欄位或函式行為,我無法說明它們,因為它們不在我的測試中。
由於它與我目前正在做的事情相關,我可能會不時新增更多關於這個函式的資訊。
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_rfc822_parse_headers — 從字串解析郵件標頭
取得包含各種標頭元素的物件,類似於 imap_header()。
headers
已解析的標頭資料
default_hostname
預設主機名稱
傳回一個類似於 imap_header() 所傳回的物件,除了來自 IMAP 伺服器的旗標和其他屬性之外。
我稍微探究了這個函式的行為。
它處理 rfc882 欄位
日期
主旨
訊息 ID
收件者
寄件者
回覆地址
寄件人 - 如果標頭中沒有,將使用「寄件者」欄位產生
標頭
參考
回覆
副本
不處理 rfc882 欄位
退信地址
已接收
轉寄 - 我認為這個欄位可能已經過時
關鍵字
如果有其他 rfc822 欄位或函式行為,我無法說明它們,因為它們不在我的測試中。
由於它與我目前正在做的事情相關,我可能會不時新增更多關於這個函式的資訊。
如果傳遞給它的文字超過內部 16 KB 緩衝區 (原始碼中的 SENDBUFLEN),這個函式將導致 PHP 致命錯誤。
我還沒有深入研究,但將輸入文字限制在少於 16,384 個字元仍然在我們的伺服器上產生了一個錯誤案例,但將限制降低到 12,000 個字元就解決了這個問題。
大多數實際的郵件標頭都遠低於 4 KB。
這個函式被 c-client 函式庫標記為內部函式,不應該直接被 PHP 使用。
請注意,結果將始終包含訊息中未設定的欄位。例如,即使訊息中沒有定義 Reply-To 和 Sender 標頭欄位,reply_to 和 sender 也會始終被設定。
從 imap_rfc822_parse_headers 獲得的物件與從 imap_headerinfo/imap_header 獲得的物件在以下幾點不同。你不會得到
* 旗標
* 訊息編號
* 大小
* 郵件日期
* Unix 時間戳記
* 擷取來源
* 擷取主旨
Unix 時間戳記可以用以下方式模擬
$headerobj=imap_rfc822_parse_headers ($header);
$udate=strtotime($headerobj->date);