我正在研究一个应用程序,用于根据到达Gmail的新IMAP电子邮件触发PHP脚本。了解新电子邮件的最佳方式是什么?已通过Gmail IMAP帐户登录?除了配置一个cron作业,我想不出什么。我在Linux(Ubuntu)盒子上运行PHP + Nginx。
答案 0 :(得分:4)
我发现这就是celular公司开发人员为验证客户gmail而采取的方式。
好吧,开始正常连接,然后:
$t1=time();//mark time in
$tt=$t1+(60*1);//total time = t1 + n seconds
do{
if(isset($t2)) unset($t2);//clean it at every loop cicle
$t2=time();//mark time
if(imap_num_msg($imap)!=0){//if there is any message (in the inbox)
$mc=imap_check($imap);//messages check
//var_dump($mc); die;//vardump it to see all the data it is possible to get with imap_check() and them customize it for yourself
}else echo 'No new messagens';
sleep(rand(7,13));//Give Google server a breack
if(!@imap_ping($imap)){//if the connection is not up
//start the imap connection the normal way like you did at first
}
}while($tt>$t2);//if the total time was not achivied yet, get back to the beginning of the loop
就是这样。
顺便说一下,这里有一些关于IMAP如何工作的好信息。我的观点是:由于IMAP几乎可以实现一种“实时同步”连接,如果你不想配置MTA来接收电子邮件(比如我),那么IMAP是获取“电子邮件pusshed”的真正选择“给你。
答案 1 :(得分:1)
只有两种方法可以从电子邮件帐户获取信息,连接到它,定期读取信息(例如,通过cron-job)获取新邮件,或者将电子邮件转发到您自己的服务器,管理新电子邮件到达PHP脚本。
Zend_Mail,Zend Framework的一部分有Zend_Mail_Storage_Imap(可以在没有其他MVC结构的情况下使用),它可以连接到Gmail来轮询帐户。