PHP выполнить действие с входящей электронной почтой

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

Например, веб-сайт должен запускать скрипт, когда пользователи отправляют электронное письмо с вложением изображения и текстом в теле. Изображение будет загружено на сервер, и будет создан новый «фотопост» с текстом в теле письма, являющимся описанием.

Мой вопрос: как мне сказать моему серверу автоматически запускать скрипт при ПОЛУЧЕНИИ электронной почты?

Любая/вся помощь приветствуется. Если вам нужна дополнительная информация, просто прокомментируйте!

Спасибо! - Джайлз


person Giles Van Gruisen    schedule 03.02.2010    source источник


Ответы (4)


Если вы используете cpanel, вы можете передать электронное письмо сценарию, который затем соответствующим образом обработает электронное письмо. Вы можете найти эту опцию в разделе пересылки электронной почты.

person John Conde    schedule 03.02.2010

Вы хотите использовать cron. Это стандартный способ запуска скриптов Unix на регулярной основе без какого-либо вмешательства пользователя. Создайте свой скрипт, убедитесь, что он может быть запущен пользователем сервера, затем запланируйте его (полная команда, например, php myscript.php в cron). Он не будет запускаться при получении электронного письма, но вы можете запускать скрипт достаточно часто, чтобы разница не была заметна.

person Tom    schedule 03.02.2010
comment
Я хотел бы немного информации о отрицательном голосовании - да, cron не будет отправлять электронную почту непосредственно в сценарий, когда электронная почта приходит, но это позволит вам управлять потоком трафика. Если он получает большие вложения и большой объем электронной почты, я думаю, было бы лучше иметь задание, которое выполняется каждый заданный период времени, проверяет, продолжается ли последний запуск, и т. д. - person Tom; 03.02.2010

Если вы запускаете веб-сайт на сервере UNIX, к которому у вас есть доступ, вы можете сделать это с помощью procmail, sieve или подобных помощников почтового транспорта. Вам нужно будет создать учетную запись пользователя для получателя псевдонима, поскольку procmail вызывается только для обработки почты «настоящих» пользователей. Ваш .procmailrc будет выглядеть примерно так:

:0
*
| /usr/bin/php /path/to/your/script.php

И помните, что procmail будет передавать свою информацию в качестве аргументов (и в переменных env).

Приведенный выше сценарий может быть для вас совершенно невозможен, но если это так, то я рекомендую более внимательно изучить http://www.procmail.org/

person kb.    schedule 03.02.2010

В качестве альтернативы вы можете «направить» электронное письмо непосредственно в ваш PHP-скрипт. Процесс для этого будет немного отличаться в зависимости от вашего почтового пакета и/или программного обеспечения панели управления сервером. Вы можете получить «вдохновение» из руководства Kayako по адресу http://www.kayako.com/manuals/Kayako_SupportSuite_User_Manual_PDF.pdf (стр. 61 и далее), где показано, как настроить отправку электронной почты в службу поддержки Kayako. Однако вам придется написать файл PHP, который считывает файл из STDIN самостоятельно.

person Richy B.    schedule 03.02.2010