imap_delete与.xls附件的邮件

时间:2012-11-05 11:07:20

标签: php imap

我们有一个PHP脚本,用imap_open打开一个邮箱,检查它是否有新消息,将它们发布到我们的内部网上,然后imap_delete发送消息并imap_expunge成为邮箱。

通常这样可以正常工作,但有时脚本无法从邮箱中删除邮件。这通常似乎是邮件有.xls附件的时候,尽管这可能是一个红色的鲱鱼。

我尝试过多次重复工作以使其正常工作,但没有任何成功。大部分时间imap_delete完全符合我们的要求。是否有明显的原因导致imap_delete / expunge无法从邮箱中删除?

或者任何人都可以建议更好的方法来删除“困难”的邮件吗?

ETA:

$check = imap_mailboxmsginfo($mailbox);
echo "Messages before delete: " . $check->Nmsgs . "<br />\n";

imap_delete($mailbox, $i);

$check = imap_mailboxmsginfo($mailbox);
echo "Messages after delete: " . $check->Nmsgs . "<br />\n";

imap_expunge($mailbox);

$check = imap_mailboxmsginfo($mailbox);
echo "Messages after expunge: " . $check->Nmsgs . "<br />\n";

结果:

Messages before delete: 1
Messages after delete: 1
Messages after expunge: 1

imap_delete和imap_expunge都返回值为true。 imap_errors()在进程期间和之后的所有点都是空的。访问日志中没有任何异常。

imap_delete调用后的

imap_fetch_overview表示删除标志已正确设置。 imap_expunge()之后的imap_fetch_overview调用返回同样的东西,删除标志仍然设置。所以我想在某些邮件的情况下,删除似乎没有删除... imap_fetch_overview的结果两次:

  

array(1){[0] =&gt; object(stdClass)#16(14){[“subject”] =&gt;串(23)   “(主题)”[“from”] =&gt; string(40)“(发件人)”   [ “到”] =&GT; string(24)“undisclosed-recipients:”[“date”] =&gt;串(31)   “Sun,2012年12月30日23:36:34 +0000”[“message_id”] =&gt; string(50)“”   [ “大小”] =&GT; int(89752)[“uid”] =&gt; int(1)[“msgno”] =&gt; int(1)[“recent”] =&gt;   int(1)[“flagged”] =&gt; int(0)[“answers”] =&gt; int(0)[“deleted”] =&gt; INT(1)   [ “看到”] =&GT; int(1)[“draft”] =&gt; int(0)}}

1 个答案:

答案 0 :(得分:0)

服务器端可能存在某些导致此问题的情况。记录imap_errors()的结果以查看删除是否失败。看看Excel附件是否是原因,以及是否应该归咎于特定的文件/文件格式,也应该非常简单。也许这篇文章在内联网上被拒绝了,因此永远不会删除?