Проверьте Gmail IMAP через PHP на наличие новых сообщений в цикле - PullRequest
3 голосов
/ 05 февраля 2011

Я изучаю приложение для запуска сценария PHP на основе новых сообщений IMAP, поступающих в Gmail.Какой лучший способ узнать, что новое электронное письмо поступило на учетную запись Gmail IMAP?Я не могу думать ни о чем, кроме как настроить работу cron.Я использую PHP + Nginx на Linux (Ubuntu).

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

Я узнал, что именно так и поступают разработчики сотовых компаний для проверки своих клиентов на 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 - это реальная опция для получения «отправленных писем» "вам.

  • Соединение остается активным от 5 до 10 минут каждый раз, когда вы подключаетесь к своей электронной почте, если только вы не отключите вручную
  • Gmail ограничивает каждую учетную запись 10 одновременными подключениями.
  • Однако учетная запись IMAP должна проверить почтовый ящик и затем сохранить активный канал на сервере IMAP (IMAP-IDLE) для предварительно установленного отраслевого стандарта за 29 минут до истечения времени ожидания. Если вы установите для параметра «Автозагрузка» значение 20–30 минут, ваш телефон должен оставаться подключенным к удаленному блоку IMAP.
  • Когда GMAIL получает электронное письмо, он должен отправить ответ на пустую сессию IMAP, и mobiPush должен получить его почти мгновенно.
  • В соответствии с расписанием получения почты Gmail каждые 10 минут, этот параметр будет синхронизировать входящую электронную почту сразу же, когда она поступит на серверы Gmail.
1 голос
/ 05 февраля 2011

Есть только два способа получить информацию из учетной записи электронной почты, подключиться к ней, регулярно читать ее (например, cron-job) для новых сообщений или переслать электронную почту на ваш собственный сервер, который передает новую электронную почту поступая в сценарий PHP.

Zend_Mail , часть Zend Framework имеет Zend_Mail_Storage_Imap (который может использоваться без остальной части структуры MVC), который может подключаться к Gmail для опроса учетной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...