如果您不使用 imap_errors() 来清除错误堆栈,则脚本执行结束时存在的任何错误都将作为 PHP 注意消息发出。
(PHP 4, PHP 5, PHP 7, PHP 8)
imap_errors — 返回所有发生的 IMAP 错误
此函数没有参数。
此函数返回自上次 imap_errors() 调用或页面开始以来生成的全部 IMAP 错误消息的数组。如果没有任何错误消息可用,则返回 false
。
如果您不使用 imap_errors() 来清除错误堆栈,则脚本执行结束时存在的任何错误都将作为 PHP 注意消息发出。
调用 imap_close($mbox) 时,会为在 imap 函数中发生的每个错误生成注意消息。要抑制这些错误消息(包括“邮箱为空”,这实际上不是错误),只需调用 imap_errors(),然后调用 imap_close($mbox)。
对于那些好奇的人来说,此函数将返回一个线性字符串数组,而不是像 error_get_last 那样返回一个包含不同内容的关联数组。
例如:
[0 => '[TRYCREATE] No folder {imap.gmail.com} (Failure)']
这会在调用 imap_open() 后生成字符串“邮箱为空”。这不是错误。这意味着以下代码不足以知道打开失败是由于错误的密码、主机名或其他原因。这
$imap = @imap_open( $mailbox, $user, $pass);
$errors = @imap_errors();
if ( $errors ) {
echo '登录失败:' . implode ('; ', $errors );
}
可能会输出“登录失败:邮箱为空”,这很奇怪。
相反,检查 imap_open() 的返回值。
$imap = @imap_open( $mailbox, $user, $pass);
if ( ! $imap ) {
$errors = @imap_errors();
echo '登录失败:' . implode ('; ', $errors );
}