Как обрабатывать электронные письма произвольно по мере их поступления? - PullRequest
1 голос
/ 12 января 2010

Я пытаюсь разработать систему, которая будет перехватывать электронные письма, отправленные на сервер, и обрабатывать их. Обработка, вероятно, будет означать синтаксический анализ метаданных, таких как IP-адреса, тело и тема электронного письма, и передачу этих сведений в веб-службу.

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

Exchange не является предпочтительным вариантом, так как я бы хотел, чтобы это не использовалось на живых серверах.

Ответы [ 3 ]

2 голосов
/ 12 января 2010

Вероятно, проще всего просто использовать любой почтовый сервер и просто обрабатывать сообщения, извлекая их непосредственно из почтового ящика пользователей электронной почты в системе через IMAP или POP3 или что-то подобное. Некоторые почтовые серверы созданы с учетом стороннего доступа, где можно регистрировать события при поступлении новой почты, поэтому вам не нужно запрашивать новые сообщения. Разные почтовые серверы имеют разные собственные протоколы доступа и API. Exchange имеет IMAP и веб-службы Exchange (EWS), Domino имеет C ++ / COM API, веб-службу GroupWise. И все они будут поддерживать какие-то протоколы клиентского доступа по умолчанию, такие как IMAP и POP3. Собственные протоколы предоставляют больше возможностей (например, уведомлений), но для ваших целей может быть достаточно IMAP или POP3.

1 голос
/ 12 января 2010

Есть множество способов сделать это. Многое из этого также может зависеть от цены, клиента и технической среды.

Если это среда MS и стоимость является фактором, один из способов сделать это - использовать встроенную службу IIS SMTP. Служба IIS SMTP чаще всего используется для отправки электронной почты, однако ее можно настроить для фактического приема электронной почты. Если вы настраиваете службу для домена, вся входящая электронная почта для этого домена помещается в каталог mailroot / drop. Он помещается в виде текстового файла (формат {guid} .eml).

Вы можете просто использовать анализатор Mime для анализа этих файлов, а затем выполнять любые бизнес-правила, которые вы хотите использовать для них. Поскольку это делается на уровне файловой системы, вам не придется беспокоиться о перехвате сетевых вызовов. Просто возьмите файл, проанализируйте его и перейдите к следующему файлу. Затем проследите, чтобы ваше приложение спало в течение X секунд, а затем проверьте, не поступили ли новые электронные письма.

PS: бесстыдный плагин - вы можете использовать aspNetMime для анализа этих файлов и извлечения данных.

0 голосов
/ 12 января 2010

Возможно, стоит реализовать простой лексинг / парсер для разбора заголовка и поиска конкретной информации заголовка. Если это IP-адрес, вы можете использовать его с помощью анализатора регулярных выражений.

В идеале вам следует подключиться к порту POP3 сервера, на котором хранятся электронные письма, и выполнить быстрое сканирование информации, если строка темы или сообщение содержат определенную строку, указывающую, что это электронная почта или даже IP-адрес. адрес в заголовке, затем вы можете получить это электронное письмо и обработать его, вот где я думаю, что лексирование / разбор электронного письма было бы выполнено первоначально до его извлечения на основе критериев.

Имейте в виду, что вы не хотите писать электронное письмо, которое не имеет отношения к делу, тогда как бы вы справились с этим.

Может быть DotNetOpenMail может помочь, так как не обязательно сбрасывает все электронные письма ...

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

...