Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить содержание почтового ящика, через pop3 просто на сокетах. 
V
    Опции темы
Nаtаshа
Дата 11.10.2011, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



Код



use Socket;



.....

#проверки на ошибки
print "Listing messages ... ";
if(!send(SOCK,"LIST\n",0))
{
    print "FAILED\n";
    exit(1);
}
if(!recv(SOCK,$listnum,1000,0))
{
    print "FAILED\n";
    exit(1);
}
if($listnum !~ /\+OK.*/)
{
    print "FAILED\n$data";
    exit(1);
}
print "OK\n$listnum\n";


#*****надо считать всю почту в файл

open(OUT,">>messages.txt");


if(!send(SOCK,"RETR 5\n\n",0))
{
    print "FAILED\n";
    exit(1);
}

if(!recv(SOCK,$data,1000,0))
{
    print "FAILED\n";
    exit(1);
}
print "$data\n";
close(OUT);

#*****считать письма в файл

close(SOCK);

exit(0);




Собственно немогу понять как считать сами письма и записать в файл. Соединение есть. Количество писем возвращает.
Вот ответ 

Цитата

Resolving pop.mail.ru ... OK
Connecting to pop.mail.ru ... OK
Awaiting server response... OK
Starting autentification ... OK
Listing messages ... OK
+OK 18 messages (53248 octets)

1 3407

2 3468

3 4807

4 2828

5 2489

6 2073

7 1963

8 2233

9 3896

10 2379

11 1881

12 2742

13 6754

14 3999

15 2237

16 1746

17 2229

18 1894

.


+OK 2489 octets


Это сообщение отредактировал(а) Nаtаshа - 16.10.2011, 14:43
PM MAIL   Вверх
kotkota23
Дата 11.10.2011, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 26.9.2011

Репутация: нет
Всего: нет



Nаtаshа, 
засылай в сокет retr, номер письма, а потом читай из сокета до точки
PM MAIL   Вверх
dixoNICH
Дата 11.10.2011, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 222
Регистрация: 20.3.2011

Репутация: нет
Всего: нет



Код

vec(my $win, fileno($socket), 1) = 1;
        my $timeout = 10;
        while(1){
            my $p = select($win, undef, undef, $timeout);
            if($p>0){
                sysread($socket,$str,1024);
            }else{
             print "Timeout\n";
            }
            $buf .=$str;
            last if $str=~/\n?\.\r\n$/;
            print FILE $buf;


PM MAIL   Вверх
Nаtаshа
Дата 11.10.2011, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



dixoNICH,  Спасибо. все работает, но вот как вытянуть из 

Код

if(!send(SOCK,"LIST\n",0))
{
    print "FAILED\n";
    exit(1);
}
if(!recv(SOCK,$listnum,1000,0))
{
    print "FAILED\n";
    exit(1);
}
if($listnum !~ /\+OK.*/)
{
    print "FAILED\n$data";
    exit(1);
}
print "OK\n$listnum\n";


Тут в listnum хранится инфа о пиьмах. А как вытянуть из listnum число писем и соответсвенно скачивать все письма из ящика.


Это сообщение отредактировал(а) Nаtаshа - 11.10.2011, 20:43
PM MAIL   Вверх
kotkota23
Дата 11.10.2011, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 26.9.2011

Репутация: нет
Всего: нет



Nаtаshа, перечитай что я уже писал, посмотри в интернете пример сессии
PM MAIL   Вверх
Nаtаshа
Дата 11.10.2011, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 9.10.2011

Репутация: нет
Всего: нет



Всем спасибо! Во всем сама разобралась. 

Привет, Александру Зульфаровичу....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0735 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.