Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Read All Email from POP3 Inbox by Message Numbers

Demonstrates how to read all of the email from a POP3 inbox by fetching each email by it's message number.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
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,
  Chilkat.Email;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  mailman: TMailMan;
  numMessages: Integer;
  i: Integer;
  email: TEmail;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  mailman := TMailMan.Create;

  //  Set the POP3 server's hostname
  mailman.MailHost := 'pop.example.com';

  //  Set the POP3 login/password.
  mailman.PopUsername := 'myLogin';
  mailman.PopPassword := 'myPassword';

  //  Get the number of messages in the mailbox.
  numMessages := mailman.GetMailboxCount();

  //  Message numbers are specific to a POP3 session. 
  //  If a maildrop (i.e. inbox)  contains 10 messages, 
  //  the message numbers will be 1, 2, 3, ... 10. 
  //  If message number 1 is deleted and a new POP3 session 
  //  is established, there will be 9 messages numbered 1, 2, 3, ... 9. 

  i := 1;

  email := TEmail.Create;
  while i <= numMessages do
    begin
      //  Fetch by the message number (not by the UIDL)
      success := mailman.FetchOne(False,0,i,email);
      if (success = False) then
        begin
          WriteLn(mailman.LastErrorText);
          Exit;
        end;

      WriteLn(email.From + ': ' + email.Subject + #10);

      i := i + 1;
    end;



  mailman.Free;
  email.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.