Я изучаю приложение для запуска PHP-скрипта на основе новых писем IMAP, поступающих в Gmail. Каков наилучший способ узнать, что новое письмо поступило на учетную запись Gmail в IMAP? Я не могу придумать ничего, кроме как настроить работу cron. Я запускаю PHP + Nginx в Linux (Ubuntu).
Я узнал, что именно это делают разработчики 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 позволяет фактически использовать какое-то соединение «Live Sync», если вы не хотите настраивать MTA для получения электронной почты (например, меня), поэтому IMAP – реальный вариант для получения «электронной почты pusshed» " тебе.
Есть только два способа получить информацию из учетной записи электронной почты, подключиться к ней, регулярно ее читать (например, с помощью cron-job) для новых сообщений или отправить электронное письмо на свой собственный сервер, который передает новое письмо, поступающее в PHP-скрипт.
Zend_Mail , часть Zend Framework имеет Zend_Mail_Storage_Imap (который может использоваться без остальной структуры MVC), которая может подключаться к Gmail для опроса учетной записи.