Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Send a POP3 RSET to Unmark Deletions
See more POP3 Examples
Demonstrates the Chilkat MailMan.Pop3Reset method, which sends the POP3 RSET command to the server. Any messages marked for deletion during the current session are unmarked and remain in the mailbox, and the POP3 session stays open. This example marks a message for deletion, then clears the mark with RSET.
Background:
RSET is POP3's in-session undo for deletion marks. It differs from Pop3EndSessionNoQuit, which also discards pending deletions but closes the connection. With RSET the authenticated session continues, so you can clear the marks and keep working — handy when a processing step fails partway and you want to retry without reconnecting.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.MailMan;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
mailman: TMailMan;
begin
success := False;
// Demonstrates the MailMan.Pop3Reset method, which sends the POP3 RSET command. Any
// messages marked for deletion during the current session are unmarked and remain in the
// mailbox. The POP3 session stays open.
mailman := TMailMan.Create;
// Configure the POP3 server connection.
mailman.MailHost := 'pop.example.com';
mailman.MailPort := 995;
mailman.PopSsl := True;
mailman.PopUsername := 'user@example.com';
mailman.PopPassword := 'myPassword';
success := mailman.Pop3BeginSession();
if (success = False) then
begin
WriteLn(mailman.LastErrorText);
Exit;
end;
// Mark a message for deletion...
success := mailman.DeleteByMsgnum(1);
if (success = False) then
begin
WriteLn(mailman.LastErrorText);
Exit;
end;
// ...then change your mind: RSET unmarks all pending deletions but keeps the session open.
success := mailman.Pop3Reset();
if (success = False) then
begin
WriteLn(mailman.LastErrorText);
Exit;
end;
// Ending the session now commits nothing, because the marks were cleared.
success := mailman.Pop3EndSession();
if (success = False) then
begin
WriteLn(mailman.LastErrorText);
Exit;
end;
WriteLn('Pending deletions were unmarked with RSET.');
mailman.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.