Вступление
Уже давно у меня чесались руки разобраться с протоколами работы с почтой, когда я уже публиковал статью по отправке писем через протокол SMTP, а сегодня я добрался и до IMAP. Напомню, что SMTP протокол служит для передачи почты. IMAP работает в обратном направлении – служит для получения почты с сервера.
Чтобы лучше понять, возможности протокола IMAP давайте напишем простой скрипт, который будет выполняться по крону, например каждый час и будет проверять наличие новых писем, если таковые найдутся, проверим их заголовок, отправителя и прочитаем содержимое. Если содержимое будет иметь какую-нибудь команду, то выполним ее. Другими словами мы сделаем управление скриптом через почту, будем отправлять различные команды, а скрипт будет их выполнять.
Управление сайтом через почту
В этом примере я использую свою почту, которая зарегистрирована на яндексе. Этот ящик и будем проверять. Прежде чем начать работать, хочу обратить внимание на то, что не все серверы по умолчанию настроены на работу с протоколом IMAP, если у вас скрипт не будет выполнятся, то стоит проверить в настройках php, а именно в конфиге php.ini, включена ли директива extension=php_imap.dll.
Приступим к самому интересному – к разработке, ниже я привел код скрипта, который должен выполняться по крону каждый час:
// email с которого слушать команды
$controlEmail = "ipatovsoft@gmail.com";
// логин
$email = "zhenikipatov@yandex.ru";
// пароль
$password = "******";
// соединяемся с почтовым сервером, в случае ошибки выведем ее на экран
$connectImap = imap_open("{imap.yandex.ru}INBOX", $email, $password) OR die("Error:" . imap_last_error());
// проверим ящик на наличие новых писем
$mails = imap_search($connectImap, 'NEW');
// если есть новые письма
if($mails){
// открываем каждое новое письмо
foreach($mails as $oneMail){
// получаем заголовок
$header = imap_header($connectImap, $oneMail);
// достаем ящик отправителя письма
$mailSender = $header->sender[0]->mailbox . "@" . $header->sender[0]->host;
// проверяем, тот ли ящик прислал письмо
if($mailSender == $controlEmail){
// получаем заголовок письма
$subject = $header->subject;
// проверяем тему
if($subject == "CMD"){
// получаем тело письма, в нем команда к действию
// $action = imap_body($connectImap, $oneMail); // получение тела письма с заголовками и разделителями
$action = imap_fetchbody($connectImap, $oneMail, 1); // получаем только текст письма
// вызываем функцию, в которой определяется действие
check_action(trim($action));
}
}
}
}
// закрываем соединение
imap_close($connectImap);
// выполнение действий
function check_action($action){
// определяем какое действие выполнять
switch($action){
// действие 1
case 'action_1':
echo 'action_1';
break;
// действие 1
case 'action_2':
echo 'action_2';
break;
// если не определено действие
default:
echo "undefined action";
break;
}
}
Вот и все, этот простой скрипт позволит управлять вашим сайтом или скриптом через почту. А какие выполнять действия, это уже придумайте сами, у кого, на что хватит фантазии.

Спасибо. Искал именно это.