3

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

4

1 回答 1

1

使用 PHP 即时检查新邮件

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

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

现在,如果有新邮件,这个函数stream 可能会返回true,但你仍然需要在后面获取它。

真正的问题

PHP 是一种脚本语言 - 一旦脚本完成执行,它unset就是所有变量,让您在下次运行时重新开始。也就是说,PHP 中的任何函数都无法帮助您立即检查是否有新邮件进来,除非您分叉运行您想要的脚本并延长执行时间的 PHP 进程。然而,你真的,真的不应该那样做,这是一种不好的做法,而且真的不是 PHP 的设计初衷。

可能的解决方案

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

于 2013-04-21T08:24:53.797 回答