Получение писем gmail на сайте

vanderv

Старатель
Регистрация
30 Май 2009
Сообщения
270
Реакции
12
ребята, подскажите, можно ли приход писем на почту gmail отправлять post запросом на url? В рамках настройки gmail конечно. Просто нужно в режиме реального времени получать сообщения. Была мысль cron-ом создать задачу и получать новые сообщения, но минимальное интервал минута, а мне нужно максимум 10 секунд. спасибо
 
По идее не получится так часто как вы хотите, потому что сам gmail не будет рассылать уведомление, о том что пришло письмо, следовательно ваш скрипт должен сам стучаться на gmail, чтобы узнать есть ли почта. И тут вы снова упираетесь в крон. С другой строный зачем вам почта так часто? Если нужен мгновенный обмен сообщениями - можно прикрутить gTalk на сайт - мы уже так делали на проекте hiddenmarketing . ru (там онлайн консультант через него работает)

Возможно я заблуждаюсь по поводу почты, но пока вариантов не вижу.

Создайте скрипт в гугл апс, чтобы при получении письма, например, запускался некий скрипт на вашем сервере. Тогда никакого крона не потребуется. Я подобным способом делал смс-рассылку себе, когда приходили письма от некоторых адресатов.
 
Создайте скрипт в гугл апс, чтобы при получении письма, например, запускался некий скрипт на вашем сервере. Тогда никакого крона не потребуется. Я подобным способом делал смс-рассылку себе, когда приходили письма от некоторых адресатов.

Могли бы вы мне объяснить как вылавливать приход писем в гугл апс?
 
проще всего начать с чтения справки на Для просмотра ссылки Войди или Зарегистрируйся

У меня работает примерно такая функция
Нужным письмам через фильтр гмейла присваивается ярлык YARLIK
Затем пишем функцию и включаем ей триггер срабатывания, минимум по дефолту - раз в минуту


Код:
function my_notification()
{
 
  var threads = GmailApp.getUserLabelByName('YARLIK').getThreads();  //переменная, в которой хранится коллекция цепочек с ярлыком YARLIK
 
  if(threads == 0) return; // прекращение выполнения, если новых цепочек нет
 
  for(i in threads)
  {
  // делаем то, что надо
  }
 
  GmailApp.getUserLabelByName('YARLIK').removeFromThreads(threads); //снимаем метки "YARLIK" с цепочек
}
 
Если раз в минуту то не пойдет. Нужно максимум раз в 10 сек
 
попробуйте почитать документацию или запустить 10 триггеров с разной задержкой (sleep) на старте
 
А еще как вариант, если крон может запускать скрипт каждую минуту, в теле скрипта нельзя прописать, чтобы он с задержками в 10 секунд 6 раз проверял прочту? Через минуту крон снова перезапусткет этот скрипт (который лежит у вас на сервере) и он по новой отрабатывает.
Топорно немного, но как вариант разве не подойдет?
 
sonicm, а вы не думаете, что Google просто возьмёт и забанит за такую активность?

не должен. вначале он будет блочить аппликуху, которая пытается получить доступ и выдаст запрос в веб-интерфейсе. Если подтвердить - всё будет ок. Но я бы всё равно советовал получать доступ через гугл скриптс
 
С кроном бодаюсь приблизительно так
<?php
for($i = 0; $i < 6; $i++)
{
action();
sleep(10);
}

хоть топор но помогает ))

Из минусов - надо добавить проверку кол-ва запущенных процессов через базу или файлик идентификатор чтоб не получить в итоге обвал сервера на расплодившихся долгоиграющих скриптах.

Как второй вариант: вместо sleep сделать контроль текущего времени юникстайм - запускать action если прошло 10 секунд с предыдущей успешной итерации и завершать скрипт если прошло 50 с начала работы
 
Была мысль cron-ом создать задачу и получать новые сообщения, но минимальное интервал минута, а мне нужно максимум 10 секунд. спасибо
через sleep уже предлагали, выше, но можно в самом кроне тоже самое попроще, пример с запуском раз в 10 секунд
*/1 * * * * root /home/mybin/script.sh; /bin/sleep 10; /home/mybin/script.sh; /bin/sleep 10; /home/mybin/script.sh; /bin/sleep 10; /home/mybin/script.sh
 
Назад
Сверху