как я могу обрабатывать входящую почту с помощью php?

#php #email

#php #Адрес электронной почты

Вопрос:

Я предполагаю, что мне нужно будет указать записи MX на моем сервере (LAMP), — что обрабатывает входящее сообщение электронной почты?

Существуют ли какие-либо существующие библиотеки PHP для этого?

Ответ №1:

Вы не хотите использовать PHP в качестве почтового сервера. У вас есть два варианта:

  1. Настройте классический почтовый сервер (postfix, sendmail, exim и т.д.), Который доставляет новые сообщения в локальный почтовый ящик. Используйте IMAP или POP для доступа к этому почтовому ящику с PHP и извлекайте из него сообщения. В качестве альтернативы, этот же метод можно использовать (практически) с любой удаленной почтовой службой, что освобождает вас от обязанности администрирования почтового сервера. (Что, как вы, вероятно, сочтете, не стоит того ради одного почтового ящика.) Этот метод обычно запускается через cron каждые несколько минут, поэтому вы не получите «мгновенную» активацию, если это требуется.

  2. Настройте классический почтовый сервер (postfix, sendmail, exim и т.д.) И используйте procmail или аналогичный для перехвата сообщений во время доставки и отправки их в PHP-скрипт. Этот метод запустит скрипт в тот момент, когда придет электронное письмо, поэтому у вас не будет задержек, как в # 1. Однако ее сложнее настроить (особенно если вы раньше не обслуживали почтовый сервер) и она не будет работать с большинством внешних почтовых служб, размещенных на хостинге.

Комментарии:

1. 1. OP, вероятно, хочет, 2 если он пишет программное обеспечение для рассылки или что-то в этом роде.

2. Согласен, я предпочитаю # 2, поскольку он запускается, а не опрашивается. Однако, если вы (вероятно?) решите, что управление вашим собственным почтовым сервером не стоит усложнений ради одного почтового ящика, тогда вы, вероятно, остановитесь на # 1.

3. Точно. На самом деле, возможно, стоит упомянуть в ответе, что #1 необязательно быть локальным (и, следовательно, самоуправляемым) так же, как #2 .

4. @Tom: Верно, я хотел сказать, что не локальный, я прояснил текст, спасибо.

Ответ №2:

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

Комментарии:

1. Затем используйте file_get_contents("php://stdin") в файле PHP и (необязательно) передайте это через библиотеку анализа почты (например, us2.php.net/mailparse ).

Ответ №3:

Я бы порекомендовал вам выполнять обработку на Perl (python тоже подходит, но синтаксис Perl очень похож на PHP), который гораздо больше подходит для этой задачи. Вы также можете найти там множество библиотек через CPAN.

http://search.cpan.org /~rjbs/Email-Simple-2.100/lib/Email/Simple.pm