【发布时间】:2022-05-01 06:23:18
【问题描述】:
当运行以下命令时一次:
<?php
$imap_structure = imap_fetchstructure($mail_connection, $email_number);
?>
我收到以下错误消息:
未知:[UNAVAILABLE] FETCH 服务器在获取消息时出错 (errflg=2)
为了确认 PHP 的 imap_fetchstructure 函数导致了错误,我在每个 imap_* 函数之后使用了 die();,从函数顶部向下移动,直到我再次开始收到错误。以下是我检查过的内容列表:
- 从 Yahoo 成功检索每封电子邮件并添加到数据库中,就好像没有出错一样;该过程依赖获取这封电子邮件的结构,因此仅凭这一点,我就不知如何工作,同时还会引发错误。
- 这确实只是在我已经在几百封电子邮件上测试了我的邮件脚本之后开始随机发生(不是一次全部,在小得多的批次中)。
- 只发生在 PHP 的
imap_fetchstructure函数中;循环时(例如十封电子邮件),每次迭代都会发生错误。 - 仅发生在 Yahoo 邮件服务器上,其他服务器不会使用完全相同的代码触发此错误。
- 自定义错误处理程序无法返回行号(尽管我知道错误发生在何处。
- 我尝试通过使用
@imap_fetchstructure()来抑制错误,尽管错误仍在报告中。 - 我尝试将代码粘贴到
try {}/catch (exception $e) {},但仍然报告错误。 - 我重新启动了我的服务器并提取了一个不同的 IP,只是因为这在更愚蠢的情况下仍然有效,尽管没有骰子。
- [编辑] 问题在开始后不到一小时就停止了。
我遇到过一些举报的人,例如Mozillazine:
我最近也开始使用我的 Yahoo 帐户收到“[UNAVAILABLE] UID FETCH Server error while fetching messages”。
他们的下一篇文章:
所以今天,没有做任何不同的事情,问题就自行解决了。这似乎是说它是在雅虎的一端,但奇怪的是,虽然它发生在 Thunderbird 中,但它没有发生在其他电子邮件客户端中。
除了硬编码我的自定义错误处理程序以忽略此错误之外,我如何抑制或编码我的系统以更好地处理这种情况?
【问题讨论】:
-
Yahoo 的服务器偶尔会出现错误,而 php_imap 包装了一个 C 库,该库可能没有可以在 PHP 中充分处理的错误处理。您可能不得不忍受它,使用不同的语言或修补 php_imap。没有一个是伟大的ppootiins。
标签: php imap yahoo-mail php-imap