Эта тема на forum.dklab.ru


Eugene Babushkin: Прокачка почты!
Всем привет!

Есть такой вопрос:
Есть почтовый ящик, с которого нужо раз в 3 минуты (например) получать почту (если она есть)
и производить необходимые действия, так вот, есть ли у кого-нибуть подобный пример? Есть нет, то скажите, какими PHP функциями это достигается?
Я слышая, что это совсем ерундовая задачка...
Евгений Бондарев:
GreatWeb:
http://php.spb.ru/php/mail_robot.html
Eugene Babushkin:
Мне нужет вариант без CRON, без Command, метод POP3 почты - как этот реализовать там ненаписано!
Юрий Насретдинов:
GreatWeb:
А без cron не получится. Если хотите без cron - попробуйте написать такое сами. Могу даже подсказать примерный алгоритм:


set_time_limit(0);
//**
while(true)
{
//алгоритм
sleep(3*60); //3 минуты
}


Только не факт, что этот процесс не будет остановлен хостингом...
Педагог:
Без cron??? Слова из поставленной задачи "каждые ... минут" реализуются только cron. Можно конечно запускать скрипт по приходу какого нибудь посетителя на твой сайт, но проверяя перед этим, чтоб прошлый раз скрипт запускался более ... минут назад (сохранять время выполнения скрипта в каком нибудь текстовом файле).
Eugene Babushkin:
ошибочка: С Cron'ом ...
Помогите, плизз
Юрий Насретдинов:
GreatWeb:
ААА !!!! МЕНЯ НАЧАЛЬНИК ПРИБЪЕТ, ЕСЛИ Я ЭТО НЕ СДЕЛАЮ !!! АААА !!!! ПАМАГИИИТЕЕЕ !!! РАСТОЛКУЙТЕ МНЕ, ТУПОМУ ДИЗАЙНЕРУ ПО ПУНКТАМ ОБЪЯСНИТЕ, ЧТО ДЕЛАТЬ, ИНАЧЕ МЕНЯ НАЧАЬНИК УБЪЕТ !!!!
Дмитрий Котеров:

GreatWeb:
Что Вам не понятно в приведенной выше статье?..
Eugene Babushkin:
Дмитрий Котеров:
Мне нужнен вариант "CRON, без Command, метод POP3 почты" (как написано там)... а подробностей там нет!

Вот что там есть:
Как забрать почту с POP3 ящика. Надо изучить сокеты и POP3. Поверьте, это просто. Чтобы понять сокеты, предствьте, что это простые файлы, в которые можно писать и читать. Для забора почты нужно открыть сокет с сервером почты на 110 порту (порт POP3 сервера). Далее, как в файл, надо написать USER ваш_логин (пример: fputs($sock,"USER dima");), затем PASS ваш_пароль. После этого командой LIST получить список писем, еще командой RETR номер взять текст письма и стереть его с сервера. Всего надо изучить 6-7 команд протокала POP3. Это выходит за рамки данный статьи.
yUAC:
Все совсем не так %( и делаю я это для себя...
Дмитрий Котеров:
http://pear.php.net/package/Net_POP3
Уж как это дело ставить, разбирайтесь сами — там куча документации по этому поводу.

Вручную: http://www.belpak.by/pop3smtp/p3telnet.htm
Юрий Насретдинов:
GreatWeb:
Ну так вот. Там же предельно ясно написано - открываем с помощью fsockopen к адресу_вашего_POP3_сервера (обычно mail.хост_вашего_сервера.домен_вашего_сервера - например mail.mail.ru) с портом 110 и получаем примерно вот что:


<?
$sock = fsockopen ( "mail.mail.ru", 110, $errno, $errstr, 30 ); //строка прямо из мануала !
if( !$sock )
{
echo "Ошибка при подключении к серверу. Номер ошибки: ".$errno.". Ответ сервера: ".$errstr;
}else
{
fputs ( $sock, "USER dima\r\n" ); //о, ужас, это же та самая строка из FAQ !
fputs ( $sock, "PASS тоже_dima\r\n" ); //по аналогии
fputs ( $sock, "LIST\r\n" ); //это тоже там написано !!!
//**
while(!feof($sock))
{
$answer = fgets ( $sock, 1000 ); //о ужас, это же тоже из мануала !!!
echo "<pre>";
var_dump ( $answer ); //выведет вам всю информацию о полученном списке
echo "</pre>";
}
//**
//дальше по аналогии делаем, продолжать не буду
//**
}
?>


Довольны ?

P.S. Пожалуйста после того, как все напишете, приведите тут хотя тот кусок кода, который получает все данные о письме
Дмитрий Котеров:
Чего-то Вы не то написали. Var_dump надо бы из цикла вынести... А в $answer данные накапливать, а не переписывать поверх каждый раз.
Юрий Насретдинов:
Дмитрий Котеров:
Ну это уже не имеет принциписального значения. Все равно письма максимум по 100 букв в строке. Да и заголовки больше 1000 символов Вы где видели ?

Эта тема на forum.dklab.ru