如果您不使用 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 );
}