Как я получаю электронное письмо и обрабатываю его в веб-приложении

System.Convert.IsDbNull][1](table.rows[0][0]);

IIRC, (table.rows[0][0] == null) не будет работать, как DbNull.Value != null;

54
задан Jonathan Leffler 8 June 2009 в 15:09
поделиться

6 ответов

Недавно я работал над проектом, который требовал синтаксического анализа электронной почты из Gmail и обновления базы данных определенными значениями на основе содержимого электронной почты. Я использовал библиотеку ezcMail (сейчас) Zeta Components , чтобы подключиться к почтовому серверу и проанализировать электронные письма.

Стратегия, которую я принял, заключалась в том, чтобы фильтровать всю интересующую входящую почту с пометкой «необработанная». Запускайте PHP-скрипт через crontab каждые 15 минут. Сценарий подключится к почтовому серверу, откроет необработанную папку IMAP и проанализирует каждое электронное письмо. После вставки интересных значений в базу данных сценарий перемещает файлы в другую папку IMAP «Обработано».

Я также обнаружил, что IMAP лучше, чем POP для такого рода обработки.

49
ответ дан 3 August 2019 в 08:02
поделиться

Я предлагаю использовать компонент Zend_Mail в Zend Framework.

6
ответ дан 3 August 2019 в 08:02
поделиться

Вам необходимо реализовать почтовый клиент на Php. Вероятно, это будет клиент POP ​​.

Этот код запросит POP-сервер, содержащий вашу электронную почту, загрузит его, а затем вы сможете проанализировать его по мере необходимости.

Быстрый поиск в Google: «POP client php» открыл огромное количество различных опций. Трудно сказать, действительно ли существует «The One True PHP POP Library», иначе я бы включил ее сюда. Если вы используете уже существующий фреймворк, вы можете проверить его уровень поддержки POP, в противном случае проверьте результаты Google выше и сделайте свой выбор. Или может быть проще всего (и наиболее познавательно :)) свернуть свою собственную.

3
ответ дан 3 August 2019 в 08:02
поделиться

Если вы хотите избежать перехвата POP или IMAP на другой сервер, чтобы получить электронную почту, вы можете добавить «перехватчик» в процесс получения электронной почты на каком-то настроенном вами SMTP-сервере (возможно, на том же сервере php). Затем пусть адрес электронной почты будет обработан этим сервером.

Вот пример с постфиксом, но аналогичные вещи возможны и с sendmail.
http://www.adkap.com/autoresponder.html

0
ответ дан 3 August 2019 в 08:02
поделиться

Используйте procmail, если он установлен в вашей системе. Поместите эти строки в файл .procmailrc в домашнем каталоге пользователя, который получает электронное письмо.

:0
| /path/to/your/script.php

Или вы также можете использовать файл .forward, содержащий

"|/path/to/your/script.php"

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

Ваш файл script.php будет читать заголовки и тело сообщения электронной почты со стандартного ввода.

14
ответ дан 3 August 2019 в 08:02
поделиться

Проверьте fMailbox . Он не требует каких-либо нестандартных расширений (таких как imap) и был протестирован с различными серверами, вложениями, составными сообщениями, SSL и т. Д.

7
ответ дан 3 August 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: