【问题标题】:imap_delete versus mails with .xls attachmentsimap_delete 与带有 .xls 附件的邮件
【发布时间】:2012-10-25 05:07:06
【问题描述】:

我们有一个 PHP 脚本,它使用 imap_open 打开一个邮箱,检查它是否有新消息,将它们发布到我们的 Intranet 上,然后 imap_deletes 消息和 imap_expunges 邮箱。

通常这可以正常工作,但有时脚本无法将邮件从邮箱中逐出。这通常是当邮件有.xls 附件时出现的,尽管这可能是一个红鲱鱼。

我已经尝试过多次修改以使其正常工作,但没有任何成功。大多数时候imap_delete 完全按照我们的意愿行事。 imap_delete / expunge 无法从邮箱中删除有什么明显的原因吗?

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

预计到达时间:

$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]=> object(stdClass)#16 (14) { ["subject"]=> string(23) “(主题)” [“发件人”]=> 字符串(40)“(发件人)” ["to"]=> string(24) "未公开的收件人:" ["date"]=> string(31) "2012 年 12 月 30 日星期日 23:36:34 +0000" ["message_id"]=> string(50) "" ["size"]=> int(89752) ["uid"]=> int(1) ["msgno"]=> int(1) ["recent"]=> int(1) ["已标记"]=> int(0) ["已回答"]=> int(0) ["已删除"]=> int(1) ["seen"]=> int(1) ["draft"]=> int(0) } }

【问题讨论】:

  • 这是一个运行 Apache 的 Mac Mini。
  • 不,我的意思是 IMAP 盒子运行在什么样的服务器上?交换?
  • @Pekka,哦,对不起。我在“楼上”通过了那个问题,并被告知“不确定,但它在 Dreamhost 上”。我猜这可能不是很有用!我可以尝试做更多的研究。
  • 如果您想在此处对您的问题进行更多活动,请改进问题并放置例如赏金。但请不要重复delref - 为了改善您的问题,请例如在删除/删除您无法删除的消息之前和之后列出标志。同时给出一个小的代码示例和文档返回值。
  • @hakre:我向您保证,对于协议违反感到抱歉,我向您保证,我无法找到有意义的信息来提供。我想一气之下宣布这个问题无法解决并不是答案。

标签: php imap


【解决方案1】:

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

【讨论】:

  • 很确定帖子没有在内网被拒绝...因为问题的主要症状是帖子在内网上被转发了数十次!我应该早点提到这一点。我将尝试使用 imap_errors() 并查看它是否提供任何有用的输出。
  • 哼,问题(终于)再次出现,我的 imap_errors() 日志似乎没有显示任何异常。也许我可以推断出这不是 imap 的问题!我想如果 imap_delete 尝试删除某些东西但没有成功,会出现某种错误。我想我应该仔细检查 imap_delete 是否被调用...
  • 是的,imap_delete 被调用,imap_errors 中没有任何内容,但该消息仍未删除并在收件箱中。莫名其妙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 2012-05-17
相关资源
最近更新 更多