我正在稍微探测这个函数的行为。
它处理 rfc882 字段
日期
主题
消息 ID
收件人
发件人
回复地址
发件人 - 如果不存在,则使用“发件人”字段生成
标题
引用
回复
抄送
不处理 rfc882 字段
返回路径
接收
转发 - 我认为此字段可能已过时
关键词
如果函数还有其他 rfc822 字段或行为,那么我无法说明,因为我的测试中没有这些字段。
由于这与我目前正在做的事情相关,因此我可能会不时添加更多关于此函数的信息。
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_rfc822_parse_headers — 解析字符串中的邮件头
获取一个包含各种邮件头元素的对象,类似于 imap_header()。
headers
已解析的邮件头数据
default_hostname
默认主机名
返回一个类似于 imap_header() 返回的对象,但 flags 和来自 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 获取的对象在以下几点有所不同。您将无法获得
* 标记
* 消息编号
* 大小
* 邮件日期
* 更新日期
* 获取发件人
* 获取主题
更新日期可以使用以下方式模拟
$headerobj=imap_rfc822_parse_headers ($header);
$udate=strtotime($headerobj->date);