如何使用imap_ping收到新电子邮件时收到通知

时间:2013-04-21 07:23:39

标签: php imap

我研究了一下当新邮件通过IMAP到达邮箱时如何获得通知。显然有几种方法可以做到这一点,一种是运行一个cron-job(我不想这样做),另一种是使用一个名为IMAP-IDLE的函数。我在PHP API中找不到任何关于它的内容,但我发现的是imap_ping方法,它假设要做到这一点。 在上面的描述中它说“它可能会发现新邮件” 有人可以解释我\给我一个关于如何做的代码示例。 如果连接处于活动状态,我只能获得TRUE \ FALSE,我怎么知道新邮件已经到达了?

1 个答案:

答案 0 :(得分:1)

使用PHP立即检查新邮件

尝试使用imap_ping()检查服务器上的新邮件的问题是该功能实际上只有两个目的:

  • 检查流是否仍处于活动状态
  • 让流保持活力

现在,如果有新邮件,stream 可能会返回true此功能,但您仍需要在文字之后获取它。

真正的问题

PHP是一种脚本语言 - 一旦脚本完成执行,它unset就是所有变量,并让你在下次运行时重新开始。即PHP中的没有功能将能够帮助您即时检查是否有新邮件进入,除非您通过延长执行时间来分叉运行所需脚本的PHP进程。但是,你真的,真的 不应该这样做,这是一个不好的做法,而不是PHP的目的。

可能的解决方案

要做你想做的事情,最好的办法是制作一个c / c ++守护进程或者那种在后台不断运行的东西。您可以让它检查新邮件,然后通过它通知移动设备,或者如果您使用PHP比使用c / c ++更好,您可以创建一个脚本来执行通知你在守护进程找到新邮件时。实现取决于您,但是检查何时收到新邮件的解决方案不是可以(也不应该)使用PHP完成的。