Delphi の IdImap4 で IDLE
Delphi の TIdImap4 で IDLE (メール受信を監視するコード)
ChatGPT や Gemini で間違ったコードばかり教えてくれるので、修正
procedure TForm1.Button1Click(Sender: TObject);
var
Response: string;
begin
if IdIMAP41.Connect() then begin
try
if IdIMAP41.SelectMailBox('INBOX') then begin
IdIMAP41.IOHandler.WriteLn('TAG001 IDLE');
Response := IdIMAP41.IOHandler.ReadLn;
Memo1.Lines.Add('Server: ' + Response);
if Pos('+', Response) <> 1 then begin
raise Exception.Create('IDLE not accepted: ' + Response);
end;
Memo1.Lines.Add('IDLE started... waiting for updates');
try
while IdIMAP41.Connected do begin
Response := IdIMAP41.IOHandler.ReadLn;
Memo1.Lines.Add('Server: ' + Response);
if Pos('EXISTS', Response) > 0 then begin
Memo1.Lines.Add('New mail detected!');
Break;
end;
end;
finally
IdIMAP41.IOHandler.WriteLn('TAG002 DONE');
Memo1.Lines.Add('IDLE stopped');
end;
end;
finally
IdIMAP41.Disconnect;
end;
end;
end;
コメント