Форум: "Начинающим";
Текущий архив: 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