- Вопрос или проблема
- Ответ или решение
- 1. Использование IMAP с поддержкой IDLE
- Подход к реализации:
- 2. Использование событийной модели на файловой системе
- Реализация:
- 3. Использование сторонних интеграций (например, Zapier)
- Рабочий процесс:
- 4. Серверные решения с постфиксом и довекотом (Postfix и Dovecot)
- Как это реализовать:
- Заключение
Вопрос или проблема
Мое веб-приложение – это система тикетов (как Zendesk), и оно должно читать электронные письма из учетной записи электронной почты и мгновенно создавать тикеты из этих писем.
Наверное, менее важная информация: нам также нужно идентифицировать письма для последующих действий, которые будут добавляться в качестве комментариев (мы планируем использовать тему письма (регулярные выражения) здесь).
Требование: Сервер электронной почты или любая сторонняя интеграция, которая уведомляет мое веб-приложение о новых электронных письмах, полученных в учетной записи электронной почты.
Если это сервер электронной почты, он должен работать на операционной системе Windows. Мы очень хотели бы использовать бесплатное или открытое программное обеспечение, но мы открыты к платным вариантам, если бесплатно не будет функции.
Что я уже сделал: Я вижу, что это можно сделать с помощью IMAP – IDLE. Я не уверен, как это реализовать, и не видел никаких серверов электронной почты, способных производить вызовы вебхуков.
Все в порядке, у меня это работает. Вот резюме:
Каждый сервер электронной почты хранит каждое письмо в виде файлов где-то в файловой системе. Я создал слушатель событий на создание файлов в этой папке, чтобы запустить скрипт на сервере, который использует IMAP для подключения к почтовому серверу на том же сервере для чтения нового письма.
Подробности:
Я использовал Coldfusion для моего веб-приложения, и его сервер приложений предоставляет вышеуказанное событие встроенным образом. Так что было очень легко запустить скрипт, когда создавался новый файл.
В общем случае ОС будет предоставлять такие триггеры (создание файла в папке), скажем, Запланированные Задачи для Windows. Используя это, мы можем запустить скрипт на нашем сервере и сделать все, что нам нужно, когда создается новый файл. В случае веб-приложения вы, вероятно, захотите использовать триггеры скриптов через командную строку.
Решение от третьей стороны: Вы можете использовать Zapier для переадресации ваших электронных писем на их специальный адрес электронной почты (который мы создаем, когда создаем у них учетную запись), и мы можем заставить Zapier мгновенно публиковать содержимое письма по URL в нашем веб-приложении.
С помощью postfix
и dovecot
вы можете запускать события, когда конкретный пользователь/адрес получает сообщение. То есть, когда [email protected]
получает сообщение, оно читается скриптом и вставляется через вызовы API в вашу систему тикетов.
Вы также можете использовать разделитель адресов, чтобы настроить так, чтобы [email protected]
доставляло все сообщения на [email protected]
.
Смотрите https://serverfault.com/questions/660877/postfix-dovecot-run-script-when-mail-is-received
https://unix.stackexchange.com/questions/178396/run-script-on-receipt-of-email
https://www.howtoforge.com/community/threads/postfix-auto-run-script-when-mail-received.47407/
Для множества способов сделать все это.
Ответ или решение
Чтобы ваша веб-программа, выполняющая функции системы тикетов, могла мгновенно уведомляться о новых сообщениях электронной почты, необходимо выбрать подходящий подход для интеграции с почтовым сервером. Ниже представлю подробный анализ возможных решений, подходящих для использования в вашей среде.
1. Использование IMAP с поддержкой IDLE
Как уже было упомянуто, IMAP с поддержкой функции IDLE — это надёжный способ получения уведомлений о новых сообщениях. Эта функция позволяет вашему приложению оставаться в ожидании нового письма, получая пуш-уведомления, когдаEmail приходит.
Подход к реализации:
- Выбор библиотеки: Вам потребуется библиотека для работы с IMAP в ColdFusion, например,
cfmail
или сторонние интеграции, такие как JavaMail. - Установка соединения: Создайте соединение с почтовым сервером через стандартный IMAP порт (обычно 993 для SSL).
- IDLE комманда: После подключения отправьте команду IDLE, чтобы оставаться подписанным на входящие сообщения.
2. Использование событийной модели на файловой системе
Если ваш почтовый сервер хранит входящие письма в виде файлов, вы можете использовать событийную модель, основанную на отслеживании создания файлов. Это позволит вашему приложению сразу реагировать на новые сообщения.
Реализация:
- Слушатель событий: Используйте встроенные возможности вашего приложения для отслеживания событий. В случае с ColdFusion это можно реализовать через встроенные триггеры.
- Скрипт на сервере: Напишите скрипт, который будет инициироваться при создании нового файла. Скрипт может использовать IMAP для извлечения информации о новом сообщении и создания нового тикета в вашей системе.
3. Использование сторонних интеграций (например, Zapier)
Если вы ищете простой и быстрый способ интеграции без сложной настройки серверов, вы можете рассмотреть использование сторонних платформ, таких как Zapier.
Рабочий процесс:
- Создание аккаунта: Зарегистрируйтесь в Zapier и настройте новое зкспресс-имя (Email).
- Создание триггера: Настройте триггер, чтобы запустить веб-хук при поступлении нового письма.
- Отправка данных: Zapier передаст данные письма в URL вашего веб-приложения, где ваше приложение сможет обработать полученное сообщение.
4. Серверные решения с постфиксом и довекотом (Postfix и Dovecot)
Если у вас есть доступ к серверу, вы можете настроить Postfix вместе с Dovecot, чтобы запускать скрипты или веб-хуки при получении новых писем.
Как это реализовать:
- Настройка Postfix: Настройте Postfix для работы с вашими учетными записями электронной почты и создайте фильтры для отправки сообщений на ваш скрипт или API.
- Скрипт на Dovecot: Используйте возможность выполнения скриптов на Dovecot для обработки входящих сообщений.
- Обработка писем: При получении нового письма запускайте скрипт, который обрабатывает сообщение и создает новый тикет с соответствующими комментариями по нему.
Заключение
Каждое из предложенных решений имеет свои преимущества и недостатки. Выбор подхода будет зависеть от ваших конкретных требований, уровня технической подготовки и бюджета. Если вы ищете простоту и скорость развертывания, сторонние решения, такие как Zapier, могут оказаться наиболее подходящими. Если же приоритетом является контроль и гибкость, стоит рассмотреть реализацию на основе постфикса и довекота.