Форум: "Начинающим";
Текущий архив: 2014.10.19;
Скачать: [xml.tar.bz2];
ВнизУ кого такое было с pop3. Зависает. Найти похожие ветки
← →
Den (2013-10-29 12:38) [0]Есть код.
procedure TForm1.Button1Click(Sender: TObject);
var
MsgCount : Integer;
i : Integer;
FMailMessage : TIdMessage;codses:TSmsFromWm;
begin
IdPOP31.Host := "pop.mail.ru";
IdPOP31.Username := "user";
IdPOP31.Password := "pass";
IdPOP31.Port := 995;
IdPOP31.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(self);
IdPOP31.UseTLS := utUseExplicitTLS;
IdPOP31.ConnectTimeout := 4500;
try
IdPOP31.Connect();
MsgCount := IdPOP31.CheckMessages;
for i:= 0 to MsgCount do begin
try
FMailMessage := TIdMessage.Create(nil);
IdPOP31.Retrieve(i,FMailMessage);
Memo1.Lines.Add(FMailMessage.Body.Text);
finally
FMailMessage.Free;
end;
end;
finally
IdPOP31.Disconnect;
end;
end;
ну в общем обыкновенный код вот такой, по всему инету он лежит, пробовал его на 2ух машинах, на обеих ведет себя одинаково, при первом нажатии на кнопку, отрабатывает как надо, при повторном, просто зависает и не выдавая никаких сообщений об ошибках так и висит минут 5. Если один раз нажать на кнопу, получить сообщения затем закрыть приложение и снова нажать на кнопку, коннектится нормально, следовательно проблема не с ограничениями со стороны сервера. Что это может быть?
← →
Кщд (2013-10-29 12:43) [1]>Den (29.10.13 12:38)
освобождать надо всё, что создали
← →
Den (2013-10-29 12:56) [2]добавил IdPOP31.IOHandler.free; если вы это имели в виду, ведет себя так же, первый раз нормально, второй и все последующие висит.
← →
MBo © (2013-10-29 13:31) [3]Вряд ли это имеет отношение к проблеме, но неаккуратненько как-то:
for i:= 0 to MsgCount - 1
← →
Туповатый © (2013-10-29 14:13) [4]добавь еще кнопку, на нее принудительный дисконнект и посмотри.
← →
Den (2013-10-29 14:31) [5]for i:= 0 to MsgCount - 1 - не вытянет последнее сообщение.
добавь еще кнопку, на нее принудительный дисконнект и посмотри. - не помогает. воще проблему то я решил уже, через tThread убиваю его после каждой проверки и все ок, но всетаки интересно что такое, а да еще, на 110 пору работает без проблем.
← →
MBo © (2013-10-29 14:48) [6]>for i:= 0 to MsgCount - 1 - не вытянет последнее сообщение.
т.е. то, что при MsgCount = 2 будет три запроса, не смущает?
Я не исключаю, что нумерация может быть с единицы (не имел дела с инди)
← →
Den (2013-10-29 14:52) [7]т.е. то, что при MsgCount = 2 будет три запроса, не смущает?
Я не исключаю, что нумерация может быть с единицы (не имел дела с инди)- если честно не вникал, но так вышло что в ящике одно письмо и если по привычке поставить -1 (как я и сделал в начале) то письмо вытянуто не будет.
← →
Туповатый © (2013-10-29 14:56) [8]
> нумерация может быть с единицы
тогда
> for i:= 1
← →
Туповатый © (2013-10-29 15:03) [9]глянул, да, нумерация с единицы, лишний запрос, получается, вот и висит. впрочем, в любом случае необходимо регулировать время, а не убивать сходу.
← →
Den (2013-10-29 15:15) [10]глянул, да, нумерация с единицы, лишний запрос, получается, вот и висит. - в смысле вот и? а что если for i:= 1 поставить то не висит? у меня висит и так и так, на 2ух компах и на 2ух pop3 серверах разных сервисов. даже больше, если только так оставить
IdPOP31.Host := "pop.mail.ru";
IdPOP31.Username := "user";
IdPOP31.Password := "pass";
IdPOP31.Port := 995;
IdPOP31.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(self);
IdPOP31.UseTLS := utUseExplicitTLS;
IdPOP31.ConnectTimeout := 4500;
try
IdPOP31.Connect();
finally
IdPOP31.Disconnect;
end;
без вытягивания сообщений, оно все равно зависает.
← →
Anatoly Podgoretsky © (2013-10-29 15:49) [11]Теперь обработчик не освобожден.
Странный вообще то код, одни ошибки. Так же и этот код, что например будет в Disconnect если Connect не произошел?
← →
Den (2013-10-29 16:28) [12]ну это так можно
IdPOP31.IOHandler.free;
if IdPOP31.connected then IdPOP31.Disconnect;
только проблему оно все равно не решает...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2014.10.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c