За последние 24 часа нас посетили 22658 программистов и 1201 робот. Сейчас ищут 737 программистов ...

Обработчик входящей почты

Тема в разделе "Вопросы от блондинок", создана пользователем pase80, 27 июн 2017.

  1. pase80

    pase80 Активный пользователь

    С нами с:
    27 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Добрый день!
    Опишу кейс:
    1) получаю письмо на email
    2) парсится тело письма и оттуда берется номер телефона
    3) письмо пересылается вместе с вложениями на другой почтовый ящик
    4) оттуда приходит ответ с подтверждением, в теме письма содержится "порядковый" номер
    5) тема письма парсится и берется оттуда номер
    6) на номер телефона из шага 2 отправляется СМС с номером из шага 5.

    Реализовать всё разом и скопом нет необходимости, на данный момент встрял на шаге 2. Перегуглил кучу разных способов, в основном все сводятся к настройкам почтового сервера, чтобы он при получении письма мог выполнять скрипт. Такой возможности у меня нет (предположим почта просто на яндексе).

    Возник вопрос: как и чем можно получить и распарсить тело письма?

    Видел приложение для Mozilla Thenderbird, которое может при получении письма выполнять java-скрипт, но нигде в мануалах к нему нет информации, как скрипту передать тело письма.
    Как вообще можно реализовать данный кейс? Главное 1-2 пункт. Остальное в принципе уже знаю как сделать.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Получить письма с того же яндекса вроде можно через imap,
    используя готовые библиотеки
    https://github.com/barbushin/php-imap
    https://github.com/ddeboer/imap
    и т.д.
    Можно настроить на хсотинге cron, чтобы раз в 5 минут, запускал скрипт PHP который будет заходить на почту и получать не про читаные письма


    Если телефон в определённом формате, 7 цифр например и других 7 цифр в тексте нет, то можно получить с помощью preg_match функции и простого регулярного выражения

    не знаю если библиотеки на PHP поддерживают скачивание вложений по imap,
    но переслать можно через PHPMailer или SwiftMailer по SMTP

    примерно как в пункте два

    как в пункте два

    у сервисов которые за деньги отправляют СМС есть API с примерами на PHP
     
  3. pase80

    pase80 Активный пользователь

    С нами с:
    27 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Спасибо, но такой сложный путь я уже продумывал (собирать почту, крон на сервере...). Но мне нужно обработать письмо сразу после получения, не выгружая всю почту. Т.е. пришло письмо - обработалось, пришло другое - обработалось. Поэтому вариант с выгрузкой не вариант.

     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    сразу это за какой промежуток времени?

    Если ты используешь почту от гугла, яндекса, то как они тебя будут оповещать о том что пришло письмо?
     
  5. pase80

    pase80 Активный пользователь

    С нами с:
    27 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Вот я и интересуюсь как можно задуманное реализовать. Например программой какой-нибудь. Например, то же самое расширение для тандерболта, которое позволяет запускать скрипт при получении письма (но без передачи параметров в скрипт). По сути это может быть какая-либо программа, установленная на всегда включенном ПК...
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    он сам то через какие промежутки времени проверяет новую почту?
     
  7. pase80

    pase80 Активный пользователь

    С нами с:
    27 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Не знаю. Мне сложно реализовывать выгрузку почты с ящика каждый N секунд и парсить все письма, которые пришли. Для этого нужно добавлять цикл, который будет проходить по всем полученным письмам...
    Никакой, более простой реализации, нет?
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Есть IMAP IDLE https://www.isode.com/whitepapers/imap-idle.html
    он по идее в режиме реального времени должен оповестить о входящей почте, думаю и на PHP можно сделать
     
    pase80 нравится это.
  9. pase80

    pase80 Активный пользователь

    С нами с:
    27 июн 2017
    Сообщения:
    5
    Симпатии:
    0
    Закрывай топик..