Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Delphi 7 idpop3 [D7, Win95/98]


Alex-11111 ©   (2003-12-19 04:15:00) 

При попытки получить почту программа виснит. Вот её код:

statusbar1.Panels[0].Text:="Соединение с сервером";
pop.Username:="alex-drob";
pop.Password:=
pop.Host:="pop.mail.ru";
pop.Connect(-1);
statusbar1.Panels[0].Text:="Проверка";
statusbar1.Panels[0].Text:=inttostr(pop.CheckMessages);
M:=TIdMessage.Create(Form1);
pop.ProcessMessage(m);
memo1.Lines:=m.Body;
pop.Disconnect;

не реагирует не на что пока подключается к серверу и окончательно виснит во время загрузки почты.


Digitman   (2003-12-19 15:47:00) [1]

читай док-цию к объекту класса TIdPOP3, разбирайся ...

а на твой вопрос - как реализовать обращение к POP3-серверу в доп.код.потоке средствами Indy - я ответил полностью


Alex-11111   (2003-12-19 15:43:00) [2]

Спасибо, работает. Но почту не принемает. Показывает количество сообщений, а потом проходит какоето время и пишет что соединение разорвано. Отправлять пробовал, получается и простое письмо и с прекреплённым файлом.


Digitman   (2003-12-19 14:58:00) [3]


type

TMyPOP3Request = class(TThread)
private
FPOP3: TIdPOP3;
FHost, FUsername, FPassword, FLogText: String;
FMsgs: TStrings;
FPort, FMsgNo, FMsgCnt: Integer;
procedure DoLog;
protected
procedure LogMessage(const LogText: String);
procedure Execute; override;
public
constructor Create(AUser, APwd, AHost: String; APort: Integer = 110);
destructor Destroy; override;
end;


неужто так сложно догадаться ?)


Alex-11111   (2003-12-19 14:44:00) [4]

Спосибо за код, но как им пользоватся. Как описать
TMyPOP3Request
И куда вписать этот код?


Digitman   (2003-12-19 13:50:00) [5]


constructor TMyPOP3Request.Create(AUser, APwd, AHost: String; APort: Integer = 110);
begin
inherited Create(True);
FHost := AHost;
FPort := APort;
FUsername := AUser;
FPassword := APwd;
Resume;
end;

destructor TMyPOP3Request.Destroy;
begin
FMsgs.Free;
inherited;
end;

procedure TMyPOP3Request.DoLog;
begin
frmMain.MemoD.Lines.Add(FLogText);
end;

procedure TMyPOP3Request.Execute;
var
i, n: Integer;
AMsg: TIdMessage;
begin
try
FPOP3 := TIdPOP3.Create(nil);
with FPOP3 do
try
UserId:= FUsername;
Password:= FPassword;
Host:= FHost;
Port := FPort;
LogMessage("


Alex-11111   (2003-12-19 12:56:00) [6]

Где скачать примеры?


Alex-11111   (2003-12-19 12:53:00) [7]

С помощью IdAntifreeze не виснет, но стоит на строчке
pop.ProcessMessage(m);


dDan   (2003-12-19 12:47:00) [8]

А вообщето с delphi идут примеры по работе с инди и там вроже есть работа с ПОП3 только вот вроде в 7 их нету придеться качать


Amoeba   (2003-12-19 12:43:00) [9]

> Alex-11111 (19.12.03 12:13) [4]
> исполнение алгоритма в доп.код.поток

Значит придется засесть за серьезный учебник и разобраться с тем, что есть потоки и зачем их используют


Alex-11111   (2003-12-19 12:13:00) [10]

исполнение алгоритма в доп.код.поток


Digitman   (2003-12-19 12:02:00) [11]

что "как" ? конкретно ? в рекомендации же фигурирует "либо ... либо .." !


Alex-11111   (2003-12-19 11:53:00) [12]

Как это сделать, не понял?


Digitman   (2003-12-19 08:55:00) [13]

либо выноси исполнение алгоритма в доп.код.поток либо пользуй IdAntifreeze


Наверх

Титульная страница Поиск, карта сайта Написать письмо