VB.NET Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++DelphiFoxProJavaPerlPythonRubySQL ServerVBScript

Delphi Examples

Bounced Mail
Character Encoding
Digital Certificates
Digital Signatures
Email
FTP
HTML-to-XML
HTTP
IMAP
Encryption
MHT / HTML Email
RSA Encryption
S/MIME
Socket
Spider
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Byte Array
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor

Unreleased...
Service
PPMD
Deflate
Bzip2
LZW
Bz2
DH Key Exchange
DSA
Icon

Type Conversion

 

Article: Understanding COM References in Delphi

Reading Unread POP3 Email

The POP3 protocol does not provide the ability to ask the server which emails are "unread". Furthermore, a pure POP3 server does not even keep this information. Some servers, such as Exchange Server, expose both POP3 and IMAP interfaces. In these cases, information about read/unread status exists on the server, but it is only available via the IMAP protocol. Email clients such as Outlook and Thunderbird keep read/unread information on the client computer. This example demonstrates how UIDLs can be saved to track and read "unread" email.

Download Chilkat Email ActiveX for POP3 / SMTP

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATMAILLib2_TLB,
    CHILKATUTILLib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
mailman: TChilkatMailMan2;
success: Integer;
saSeenUidls: CHILKATUTILLib_TLB.ICkStringArray;
saUidls: CHILKATUTILLib_TLB.ICkStringArray;
saUnseenUidls: CHILKATUTILLib_TLB.ICkStringArray;
i: Integer;
n: Integer;
bundle: CHILKATMAILLib2_TLB.IChilkatEmailBundle2;
email: CHILKATMAILLib2_TLB.IChilkatEmail2;

begin
//  The mailman object is used for receiving (POP3)
//  and sending (SMTP) email.
mailman := TChilkatMailMan2.Create(Self);

//  Any string argument automatically begins the 30-day trial.
success := mailman.UnlockComponent('30-day trial');
if (success <> 1) then
  begin
    ShowMessage('Component unlock failed');

  end;

//  Set the POP3 server's hostname
mailman.MailHost := 'mail.chilkatsoft.com';

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

//  We're keeping a list of already-seen UIDLs in a text file:
//  If this is the first time you're running this example,
//  create an empty text file named "seenUidls.txt"
saSeenUidls := TCkStringArray.Create(Self).ControlInterface;
success := saSeenUidls.LoadFromFile('seenUidls.txt');
if (success <> 1) then
  begin
    ShowMessage('failed to load seenUidls.txt');

  end;

//  Get the complete list of UIDLs on the mail server.

saUidls := mailman.GetUidls() as CHILKATUTILLib_TLB.ICkStringArray;

if (saUidls = nil ) then
  begin
    ShowMessage(mailman.LastErrorText);

  end;

//  We don't have set operators (yet) on the StringArray object,
//  so create a new string array object (it's an object, not an actual array)
//  and add the UIDLs from saUidls that aren't already seen.
saUnseenUidls := TCkStringArray.Create(Self).ControlInterface;

n := saUidls.Count;
for i := 0 to n - 1 do
  begin
    if (saSeenUidls.Contains(saUidls.GetString(i)) <> 1) then
      begin
        saUnseenUidls.Append(saUidls.GetString(i));
      end;
  end;

if (saUnseenUidls.Count = 0) then
  begin
    ShowMessage('No unseen emails!');

  end;

//  Download in full the unseen emails:

bundle := mailman.FetchMultiple(saUnseenUidls as CHILKATMAILLib2_TLB.ICkStringArray);
if (bundle = nil ) then
  begin
    ShowMessage(mailman.LastErrorText);

  end;

for i := 0 to bundle.MessageCount - 1 do
  begin
    email := bundle.GetEmail(i);
    Memo1.Lines.Add(email.From);
    Memo1.Lines.Add(email.Subject);
    Memo1.Lines.Add('----');

  end;

//  We've seen all the emails, save saUidls to "seenUidls.txt"
saUidls.SaveToFile('seenUidls.txt');


end;

 

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2007 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · XML Parser