InMail - Модуль для работы с входящей почтой

Делитесь модулями
  • А как коннектиться к оутлук почтам? Если не поддерживается TLS
    03b1e15e-c68f-4e52-88d6-f2a00dbd61bc-image.png

  • В некоторых кубиках неплохо было бы добавить изменение пользователем названия переменной. Например в кубике "Получить содержание последнего письма" нет такой возможности.

  • @fluffik
    Кубик "Настроить получение почты"
    Протокол: imap
    Автонастройка: false
    Адрес сервера: outlook.office365.com
    Порт: auto
    Шифрование: SSL
    Логин: блабла@hotmail.com
    Пароль: блаблаблабла

    Дальше кубик "Получить содержимое последнего письма"

    Потом создаём лог:
    [[MAIL_TEXT_PLAIN]]

  • При попытках "Получить содержимое письма по критериям" как-то слишком часто получаю ошибки такого плана:

    [190339380] [16:16:37] Поток №1 : _InMail.imap.search: FAILED_PARSE - Не удалось распарсить результат: "* SEARCH 1493480 * 1139 EXPUNGE * 1137 EXPUNGE * 1135 EXPUNGE * 1134 EXPUNGE * 1132 EXPUNGE"
    
    [190339380] [16:16:51] Поток №1 : _InMail.imap.search: FAILED_PARSE - Не удалось распарсить результат: "* SEARCH 1493480 * 1141 EXPUNGE * 1140 EXPUNGE * 1139 EXPUNGE * 1137 EXPUNGE"
    

    Почтовый сервер свой (на арендованном VDS). Лимитов подключений к почте нет (как и каких-либо других).
    Всякие клиенты типа "Mozilla Thunderbird" работают с почтой вообще без проблем, но вот модуль BAS почему-то выдает ошибки.

    В данный момент я решаю проблему так:
    Ставлю получение почты в цикл, в случае ошибки - сон 30 секунд и повтор цикла. Если ошибки нет - идем дальше.
    В 9 из 10 случаев данный способ решает проблему - BAS в итоге все-таки получает письмо.
    Однако, хотелось бы обойтись без таких дурацких и очень медленных костылей.

    Не подскажете в чем дело?

  • @Mimino said in InMail - Модуль для работы с входящей почтой:

    При попытках "Получить содержимое письма по критериям" как-то слишком часто получаю ошибки такого плана:

    [190339380] [16:16:37] Поток №1 : _InMail.imap.search: FAILED_PARSE - Не удалось распарсить результат: "* SEARCH 1493480 * 1139 EXPUNGE * 1137 EXPUNGE * 1135 EXPUNGE * 1134 EXPUNGE * 1132 EXPUNGE"
    
    [190339380] [16:16:51] Поток №1 : _InMail.imap.search: FAILED_PARSE - Не удалось распарсить результат: "* SEARCH 1493480 * 1141 EXPUNGE * 1140 EXPUNGE * 1139 EXPUNGE * 1137 EXPUNGE"
    

    Почтовый сервер свой (на арендованном VDS). Лимитов подключений к почте нет (как и каких-либо других).
    Всякие клиенты типа "Mozilla Thunderbird" работают с почтой вообще без проблем, но вот модуль BAS почему-то выдает ошибки.

    В данный момент я решаю проблему так:
    Ставлю получение почты в цикл, в случае ошибки - сон 30 секунд и повтор цикла. Если ошибки нет - идем дальше.
    В 9 из 10 случаев данный способ решает проблему - BAS в итоге все-таки получает письмо.
    Однако, хотелось бы обойтись без таких дурацких и очень медленных костылей.

    Не подскажете в чем дело?

    Включите лог отладки

  • InMail
    Как остановить отправителя

  • @shashou520 said in InMail - Модуль для работы с входящей почтой:

    InMail
    Как остановить отправителя

    Чегось?

  • @Mimino, какая версия модуля? Подобные ошибки были исправлены в версии 1.1

  • @GhostZ Прошу прощения за свою невнимательность.
    Я почему-то думал, что модуль обновляется вместе с BAS.
    Не знаю почему))

    Только что обновил модуль. Результат протестирую позже.
    Спасибо.

  • @Mimino, в 25.5.0 версии BAS последняя версия модуля 1.2

  • @GhostZ хмммм.... у меня не обновился.
    А как можно вручную скачать версию 1.2? В шапке его нет.

    P.S.: уже вижу, что моя проблема не исчезла полностью. Позже включу логирование и скину сюда.

  • @Mimino, залил версию 1.2

  • InMail.txt <<< Прикрепил файл с логом ошибок.

    Наверное, сразу поясню логику, по которой у меня работают проекты:
    Есть некий пул купленных доменов. Их очень много. Их список подтягивается в виде ресурса.
    При регистрации на сайтах BAS генерирует случайную строку, затем @ и подставляет один из доменов ресурса.
    При этом, вся почта на всех купленных доменах автоматически переадресовывается на единый домен, из которого я потом беру почту - такой себе хаб, в котором собирается вся почта со всех потоков всех запущенных BAS.

    То есть, к примеру:
    При регистрации один из потоков указывает адрес почты "cat@dog.ru"
    Письмо с кодом верификации автоматически пересылается c адреса "*@dog.ru" на почту "bas@bas.ru"
    Модуль InMail сразу подключается к серверу "bas@bas.ru" и ищет там все письма, получателем которых указан "cat@dog.ru"

    В большинстве случаев такая логика работает исправно.
    Однако чем дольше работает BAS, тем чаще появляются ошибки, лог которых я приложил в файле.

    P.S.: Основной почтовый сервер (тот самый хаб "bas@bas.ru") не имеет никаких лимитов подключений и т.д.
    Все письма приходят в хаб без задержек - я вижу их и в веб-интерфейсе Roundcube, и в клиенте Mozilla Thunderbird, но вот модуль почты их почему-то не видит, а в самом финале, после сотен неудачных запросов, выдает такую ошибку:
    [InMail debug] imap ответ: «‎RECV_ERROR», ошибка: «‎Failure when receiving data from the peer»
    Остальные потоки при этом продолжают работать, как ни в чем не бывало - получают почту, удаляют письма, никаких ошибок.

  • @Mimino, Failure when receiving data from the peer - это сетевая ошибка которую модуль получает от CURL, что-то блокирует запрос, провайдер, прокси или файервол/антивирус

  • @Mimino
    у меня похожая проблема.

    Логика такая, скажем так - кубик - проверка количества писем - если он увидел 0 писем то и послед. проверки покажет 0, пока не перезагрузишь поток. В итоге просто поставил паузу, при которой 100% придет письмо.

  • @dean999, использует ожидание письма, там переподключение происходит раз в 4 попытки найти письмо, или сбрасывайте соединение самостоятельно выполнив код: _InMail.getApi().reset();

  • Подключаюсь по imap к gmail и совсем не получается использовать получение письма с фильтрацией по теме письма и по тексту письма. Если эти два пункта не использовать,то письмо получает нормально,но понятное дело без нормального фильтра. Нашел такую закономерность - поиск работает только если использовать английские буквы и всё. Символы, кириллица и прочее сразу ошибка, при этом в письме это всё точно есть. Расширенный поиск в самом gmail работает нормально и ищет любые символы. Пробовал закодировать в Quoted Printable, как в оригинальном сообщении, пробовал unicode escape - ничего не работает.
    Сама ошибка:

    [InMail debug] imap запрос: «‎UID SEARCH CHARSET UTF-8 FROM "123@mail.ru" TO "1234@gmail.com" TEXT "код"», url: «‎imaps://imap.gmail.com/INBOX»
    [InMail debug] imap ответ: «‎QUOTE_ERROR», ошибка: «‎Quote command returned error»
     Произошла ошибка : _InMail.imap.search: QUOTE_ERROR - Could not parse command
    
  • @get09214, исправил

  • @GhostZ Проверил и всё равно есть проблема. Письмо находит, но через раз. Допустим если два раза подряд выполнить действие "Получить содержимое одного письма по критериям" или просто рандомно получать письмо, то вылетает эта ошибка.

    [InMail debug] imap запрос: «‎ENABLE UTF8=ACCEPT», url: «‎imaps://imap.gmail.com»
     [InMail debug] imap ответ: «‎QUOTE_ERROR», ошибка: «‎Quote command returned error»
    _InMail.imap.search: QUOTE_ERROR - ENABLE not allowed now.
    
  • @get09214, исправил