uses
Classes, SysUtils, Forms, Controls, StdCtrls,
IdPOP3, IdIMAP4, IdExplicitTLSClientServerBase,
TaurusTLS;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
procedure OnSSLNegotiated(ASender: TTaurusTLSIOHandlerSocket);
public
end;
(...)
procedure TForm1.OnSSLNegotiated(ASender: TTaurusTLSIOHandlerSocket);
var
s: String;
begin
if not Assigned(ASender.SSLSocket) then Exit;
s := ASender.SSLSocket.SSLProtocolVersionStr;
if s <> '' then
Memo1.Lines.Add('TLS Version: ' + s);
if not Assigned(ASender.SSLSocket.Cipher) then Exit;
s := ASender.SSLSocket.Cipher.Name;
if s <> '' then
Memo1.Lines.Add('Cipher Name: ' + s);
s := ASender.SSLSocket.Cipher.Description;
if s <> '' then
Memo1.Lines.Add('Cipher Description: ' + Trim(s));
s := ASender.SSLSocket.Cipher.Version;
if s <> '' then
Memo1.Lines.Add('Cipher Version: ' + s);
if ASender.SSLSocket.Cipher.Bits > 0 then
Memo1.Lines.Add('Cipher Bits: ' + IntToStr(ASender.SSLSocket.Cipher.Bits));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
IMAP : TIdIMAP4 = Nil;
SSLIO : TTaurusTLSIOHandlerSocket;
sl : TStringList;
b : Boolean;
begin
try
IMAP := TIdIMAP4.Create(nil);
SSLIO := TTaurusTLSIOHandlerSocket.Create(nil);
SSLIO.OnSSLNegotiated := @OnSSLNegotiated;
SSLIO.SSLOptions.MinTLSVersion := TLSv1_2;
SSLIO.SSLOptions.SecurityLevel := 1;
IMAP.IOHandler := SSLIO;
IMAP.UseTLS := utUseImplicitTLS;
IMAP.Port := 993;
IMAP.Username := 'user';
IMAP.Password := 'pass';
IMAP.Host := 'mail.server.your.choice';
IMAP.Connect;
try
sl := TStringList.Create;
try
b := IMAP.ListMailBoxes(sl);
if b then
begin
Memo1.Lines.Add('Folders:');
Memo1.Lines.AddStrings(sl);
end
else
Memo1.Lines.Add('Failed to list folders');
finally
sl.Free;
end;
finally
IMAP.Disconnect;
end;
finally
if Assigned(SSLIO) then
SSLIO.Free;
if Assigned(IMAP) then
IMAP.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
POP : TIdPOP3 = Nil;
SSLIO : TTaurusTLSIOHandlerSocket;
msgcnt : Integer;
begin
try
POP := TIdPOP3.Create(nil);
SSLIO := TTaurusTLSIOHandlerSocket.Create(nil);
SSLIO.OnSSLNegotiated := @OnSSLNegotiated;
SSLIO.SSLOptions.MinTLSVersion := TLSv1_2;
SSLIO.SSLOptions.SecurityLevel := 1;
POP.IOHandler := SSLIO;
POP.UseTLS := utUseImplicitTLS;
Pop.Port := 995;
POP.Username := 'user';
POP.Password := 'pass';
POP.Host := 'mail.server.your.choice';
POP.Connect;
try
msgcnt := POP.CheckMessages;
Memo1.Lines.Add('Messages in Box: %d',[msgcnt]);
finally
POP.Disconnect;
end;
finally
if Assigned(SSLIO) then
SSLIO.Free;
if Assigned(POP) then
POP.Free;
end;
end;