2011-08-30 285 views
0

我有一个自定义的应用程序,它依靠cron作业每5分钟检查一次新电子邮件。如果有新的电子邮件,它会执行一个操作。我想要做的是在新电子邮件到达时启动回调,然后执行操作。在新电子邮件上的smtp回调

我可以将cron作业设置为1分钟间隔(目前设置为5分钟),但这看起来像是浪费资源。该应用程序是建立在PHP和任何帮助将不胜感激,我只是不知道我应该看看他们的时刻。

中号

+0

您可以使用.forward将电子邮件直接发送到应用程序,该应用程序将删除cron作业要求。但是你必须提供这个回调应该做的更多细节。 –

+0

请参阅http://stackoverflow.com/questions/7028686/capture-and-manage-email-data-with-php/7028828#7028828了解从何处开始的一些信息。您可以指示您的MTA(sendmail/postfix)将邮件传递到PHP脚本的管道中 –

+0

将新邮件传递给脚本,请跳过cron作业 – 2011-08-30 20:29:12

回答

1

非常基本的邮件管道脚本:

#!/usr/bin/php -q 
<?php 
// read from stdin 
$fd = fopen("php://stdin","r"); 
$email = ""; 
while (!feof($fd)){ 
    $email .= fread($fd,1024); 
} 
fclose($fd); 

?> 

你$电子邮件做什么,取决于你需要什么

+0

所有这些,不妨只是''email = file_get_contents('php:// stdin') '。 –

+0

我从脚本中删除了代码,其中一个进程流,但当然你是正确的。但它的PHP有十几种方法可以做任何事情 – 2011-08-30 20:41:44

2

您可以使用类似MailGun或SendGrid的Parse API将接收您的电子邮件和回拨到您指定的端点。