Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Вниз

IDPOP3 проблема чтения писем   Найти похожие ветки 

 
barbaroska   (2008-12-06 22:00) [0]

Пробую:

procedure TForm1.checkMail;
var
 i, mailcount: DWord;
 popMessage: TIdMessage;

 procedure exit_;
 begin
   popMessage.Free;
   if IdPOP.Connected then IdPOP.Disconnect;
 end;

begin
ShowMessage("1111");
 popMessage:= TIdMessage.Create(form1);
 try
   IdPOP.Connect;
   mailcount:= IdPOP.CheckMessages;
   for i := 0 to mailcount - 1 do begin
      if IdPOP.Retrieve(i, popMessage) then begin // Принимаем письмо
         ShowMessage(popMessage.Subject+"="+popMessage.Body.Text);
         IdPOP.Delete(i);
      end;
   end;
   IdPOP.Disconnect; exit_;
 except
   exit_;
 end;
end;

коннект происходит, показывает что есть письма на сервере, но
IdPOP.Retrieve(i, popMessage)
возвращает ложь..

гугл ничего не дал...
что может быть?


 
Johnnnn   (2008-12-06 22:18) [1]

Так непомню что к чему но попробуй в етом кучке I на 0 поменять
IdPOP.Retrieve(0, popMessage) или на 1 может выйжет че


 
bbk   (2008-12-06 22:44) [2]

Johnnnn, спасибо!

действительно:

i, mailcount: Integer;

заработало,

странно очень...


 
Johnnnn   (2008-12-06 22:51) [3]

Да там просто все после того как ты удаляеш письмо то следующему по списку присваивается его номер тоесть было 0 и 1 одно ты удалил и оставшемуся присвоился номер 0 а твой цикл спрашивает про 1 а такого нет уже ну вообщем както так. может и не так незнаю точно


 
bbk   (2008-12-06 23:00) [4]

да нет, на сервере одно письмо и было.
я просто поменял i с DWord на Integer как описано в Retrieve.

а вот насчет  IdPOP.Delete(i)  я кстати первым делом и подумал, но в найденом в нете примере так и было реализовано, пока не мог проверить из-за того что вообще прочитать не мог.

вероятно лучше сдель:

while idPOP.CheckMessages > 0 do begin
     if IdPOP.Retrieve(i, popMessage) then begin // Принимаем письмо
        ShowMessage(popMessage.Subject+"="+popMessage.Body.Text);
        IdPOP.Delete(0);
     end;
end;


 
Германн ©   (2008-12-07 00:33) [5]


> bbk   (06.12.08 23:00) [4]
>
> да нет, на сервере одно письмо и было.
> я просто поменял i с DWord на Integer

Ничего себе просто!
Пройди вот этот тест. И обрати внимание на вопрос №8.


 
bbk   (2008-12-07 00:59) [6]

"Пройди вот этот тест"  какой тест?

что-то я ничего не пойму с этим IdPOP.Retrieve

опять ничего не работает (:
возвращает что есть два письма, но ни IdPOP.Retrieve(0, popMessage) ни IdPOP.Retrieve(i, popMessage) не читает, возвращает ложь.
до этого все читалось, некоторые пробывал удалять..

function TIdPOP3.Retrieve(const MsgNum: Integer; AMsg: TIdMessage): Boolean;

такое ощущение, что MsgNum что-то другое, а не порядковый номер в колличестве писем на сервере.

погуглил опять безрезультатно..


 
bbk   (2008-12-07 01:10) [7]

вот что интересно, возвращает два письма.
при попытке прочитать IdPOP.Retrieve(0, popMessage) вовзращает ложь
при IdPOP.Retrieve(1, popMessage) читает
и при IdPOP.Retrieve(2, popMessage) читает

может нумерация там с 1 ? тогда что такое 0 (MsgNum) при котором читало..


 
bbk   (2008-12-07 01:21) [8]

POP3-RETR ( n -- a u ior ) - принимает число (номер письма) в качестве аргумента и возвращает строку с полным текстом письма, которое хранится на сервере под указанным номером, а также номер возможной ошибки ввода/вывода

Вот пример простого сеанса с POP3 сервером:
S: <создаём новое TCP соединение c POP3 сервером через порт 110>
S: +OK POP3 server ready
C: USER MonstrVB
S: +OK User MonstrVB is exists
C: PASS mymail
S: +OK MonsrVB"s maildrop has 2 messages (320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S:
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S:
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: <закрываем соединение>

из этого я так понимаю что нумерация с 1 все таки, и нумерация соответсвует пока не закрыт протокол.

правильно?


 
Германн ©   (2008-12-07 01:24) [9]


> bbk   (07.12.08 00:59) [6]
>
> "Пройди вот этот тест"  какой тест?
>
>

Пардон. Не вставил ссылку.
http://www.delphikingdom.com/quintana/quintana.asp?ItemID=10


 
Anatoly Podgoretsky ©   (2008-12-07 10:52) [10]

> bbk  (07.12.2008 0:59:06)  [6]

> такое ощущение, что MsgNum что-то другое, а не порядковый номер в колличестве писем на сервере.

А у тебя разуе номер письма, я лично вижу индекс.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1228729360
Khim
2008-12-08 12:42
2009.01.18
Автозапуск


15-1227512397
nnov
2008-11-24 10:39
2009.01.18
звук sound blaster 5.1


4-1204522266
uroksan
2008-03-03 08:31
2009.01.18
считывание данных через Usb


15-1226136730
sloosar
2008-11-08 12:32
2009.01.18
Скрытия IP адреса


15-1227246774
Math
2008-11-21 08:52
2009.01.18
Более точные вещественные числа чем Extended?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский