imap_rfc822_parse_headers

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_rfc822_parse_headers解析来自字符串的邮件头

描述

imap_rfc822_parse_headers(string $headers, string $default_hostname = "UNKNOWN"): stdClass

获取包含各种邮件头元素的对象,类似于 imap_header().

参数

headers

解析的邮件头数据

default_hostname

默认主机名

返回值

返回一个类似于 imap_header() 返回的对象,除了来自 IMAP 服务器的标志和其他属性。

参见

添加说明

用户贡献说明 6 个说明

Marco Arment
14 年前
如果传递给此函数的文本超过内部 16 KB 缓冲区 (源代码中的 SENDBUFLEN),则此函数会导致 PHP 致命错误。

我还没有深入研究,但将输入文本限制在 16,384 个字符以内仍然会导致我们服务器上的一种错误情况,但将边界缩减至 12,000 则解决了问题。

大多数现实世界中的邮件头都远小于 4 KB。
Kevin Casper <casperke at gmail dot com>
19 年前
我正在稍微探查这个函数的行为。

它处理 rfc882 字段

date
subject
message_id
to
from
reply-to
sender - 如果没有在

references
in-reply-to
cc

不处理 rfc882 字段
return-path
received
resent - 我认为此字段可能已过时
keywords

如果函数还有其他 rfc822 字段或行为,那么我无法说明,因为它们不在我的测试范围内。
由于它与我目前正在做的事情相关,我可能会不时添加更多关于此函数的信息。
phrank
15 年前
此函数被 c-client 库标记为内部函数,不应直接由 php 使用。

请注意,结果始终包含消息中未设置的字段。例如,reply_to 和 sender 始终会被设置,即使消息中没有定义 Reply-To 和 Sender 头字段。
Sven dot Dickert at planb dot de
22 年前
从 imap_rfc822_parse_headers 获取的对象与从 imap_headerinfo/imap_header 获取的对象在以下方面有所不同。您将不会获得
* flags
* msgno
* size
* Maildate
* udate
* fetchfrom
* fetchsubject

udate 可以使用以下方法模拟
$headerobj=imap_rfc822_parse_headers ($header);
$udate=strtotime($headerobj->date);
jh at junetz dot de
19 年前
但是您将获得一个完整的 To 字段,即按照 RFC 822 中针对长头字段的规范展开。因此,如果您想用此函数替换 imap_headerinfo(),则可以在 imap_fetchheader() 上运行它。
Oliver
18 年前
要查看返回对象的內容,请尝试以下代码

$stream = imap_open($server, $username, $password);
$header = imap_fetchheader($stream, $uid, FT_UID);
$obj = imap_rfc822_parse_headers( $header);
print "<html><head></head><body><pre>\n";
print_r($obj);
print "</pre></body></html>";
imap_close($stream);
To Top