imap_fetchheader
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_fetchheader — メッセージのヘッダを返す
説明
指定したメッセージについて、フィルタリング されていない完全な » RFC2822 フォーマットのヘッダをテキスト文字列として取得します。
パラメータ
imap
IMAP\Connection クラスのインスタンス。
message_num
-
メッセージ番号。
flags
-
オプション
flags
は次のようになります。-
FT_UID
- 引数message_num
は UID です。 -
FT_INTERNAL
- 返される文字列は "internal" フォーマットです。CRLF に正規化しません。 -
FT_PREFETCHTEXT
- RFC822.TEXT を、 同時に事前に取得しておく必要があります。これは、メッセージテキスト 全体を取得したい場合(例:「ローカルファイルに保存する」操作)に IMAP 接続で余分な RTT を回避します。
-
戻り値
指定したメッセージのヘッダをテキスト文字列で返します。
失敗した場合に false
を返します
変更履歴
バージョン | 説明 |
---|---|
8.1.0 |
引数 imap は、IMAP\Connection
クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、有効な imap リソース が期待されていました。
|
+add a note
User Contributed Notes 2 notes
rgagnon24 dot nospam at gmail dot com ¶
14 years ago
Interesting that imap_headerinfo() does not allow a UID for the $msg_number field like all other fetching functions seem to allow.
If you want to use a UID to fetch the headers, use this two-step process:
<?php
/*
* assumes $mbox is your stream, and $uid is set
* properly. Proper error checking is up to you.
*/
$hText = imap_fetchbody($mbox, $uid, '0', FT_UID);
$headers = imap_rfc822_parse_headers($hText);
?>
The result is the same as the output of imap_headerinfo(), but you get to use the UID.
Jille at nomorecrap dot quis dot cx ¶
16 years ago
<?PHP
$headers=imap_fetchheader($imap, $msgid);
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $headers, $matches);
?>
Works quite well for splitting headers,
$matches will contain 3 arrays:
$matches[0] are the full-lines (To: Jille@devnull.quis.cx\r\n)
$matches[1] will be the header (To)
$matches[2] will be the value (Jille@devnull.quis.cx)
In multi-line values the 'multilining is not stripped!'
this could be achieved with something like:
<?PHP
preg_replace('/\r\n\s+/m', '', $matches[2]);
?>