PDA

Просмотр полной версии : sockets в PHP



stasek
14.03.2005, 02:29
У мен возникла необходимость приконектиться к pop серверу и забрать со своего ящика все письма. Для данной задачи я выбрал сокеты, а именно функцию fsockopen(). Пытаюсь авторизироваться с сервером так:

$sock = fsockopen ("pop.mail.ru", 110, $errno, $errstr, 30);
if (!$sock) {
echo "$errstr ($errno)
\n";
}
else {
fputs ($sock, "USER mylogin");
if (!$sock)
{
echo "$errstr ($errno)
\n";
}
else
{
fputs ($sock, "PASS mypass");
if (!$sock)
{
echo "$errstr ($errno)
\n";
}
else
{
fputs ($sock, "LIST");
echo fgets ($sock,128);
}
}
}


И вот в чем проблема! Сокет работает, то есть подсоединение с сервером происходит, но вместо списка коичества писем в виде:

+OK
1 46394
2 20377
3 27074

Мне показывает только +OK
Не пойму в чем дело:( Помогите а? Надеюсь что хоть кто-нибудь понимает в этом и ответит мне...:)

AiK
14.03.2005, 03:00
fgets ($sock,128); - берёт одну строчку длинной до 127 битов.
Так что всё путём. Для того, чтобы прочитать несколько строчек используй fread.

stasek
14.03.2005, 03:06
Кстати все получилось у меня, там просто цикл задал чтобы переменную вывести точнее строки в переменной, но вот в чем проблема! не могу получить само письмо:( Шлю команду RETR 1 и получаю почему то:

+OK
+OK Password required for user stuser@list.ru
+OK stuser@list.ru maildrop has 2 messages (2145 octets)
+OK 2 messages (2145 octets)
1 1075
2 1070
.

В доках почитал и там сказано что:

команда RETR извлекает сообщение с указанным номером и помещает его в буфер местного UA:
CLIENT: RETR 1 SERVER: +OK 120 octets SERVER: <the POPS server sends the entire message here> (РОРЗ-сервер высылает сообщение целиком) SERVER:

И чо с этим буфером делать? Откуда получить этот буфер? Может вопрос глупый но я новичок в этом, второй день тока пишу скрипт. Заранее спасибо за ответ.

AiK
14.03.2005, 03:13
См. тут:
http://www.thewebmasters.net/php/POP3.phtml

stasek
14.03.2005, 03:23
нууу... на англицком я не бачу. Шо ты мене предлахаеш??? :)

AiK
14.03.2005, 03:25
учить английский :)
А вообще я клоню к тому, что изобретение велосипедов не самое полезное задание.
Исхдники предложенные посмотри...

stasek
14.03.2005, 03:28
посмотрю обязательно, только мне это ООП в этом исходнике не понять, да и вообще пока не пнять что там за "->"

stasek
14.03.2005, 03:41
Даже если изобретать велосипед, то самому дойти до этого и понять как работает интересней :) обьсяни что это за класс в этих исходниках и как его реализовать? ну в двух словах, а? Сам исходник я так понял небольшой и находится в разделе SYNOPSIS. О какой понятливый :)

AiK
14.03.2005, 03:49
Ой, блин. Тяжело тебе будет, раз ты ссылку на исходник углядеть не можешь:
http://www.thewebmasters.net/php/class.POP3.phps

stasek
15.03.2005, 01:05
Просто все равно хотелось самому написать а не пользоваться классами. Ну а как быть со вложенными письмами??? Как их то получать через протокол pop3? Дай намётку, есть ли это в этом классе? Я поищу тогда данную фишку. Просто ведь письма приходят и вложенные и может вообще картинка :)