Thema: Delphi Indy: POP und SSL - wie?

Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#12

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 18:05
Hi,

so - da hast Du mich ja gerade ganz verrückt gemacht. Dachte schon, es sei ein Bug drin

Lösung mit einem TIdPOP3 und einem TIdSSLIOHandlerSockenOpenSSL (als IOHandler für TIdPOP3):

Delphi-Quellcode:
IdPOP31.Host := 'pop.gmail.com';
IdPOP31.Port := 995; // Port für Secure POP3
IdPOP31.UseTLS := utUseImplicitTLS; // wichtig, gmail akzeptiert nichts anderes!
IdPOP31.Username := 'meinname@gmail.com';
IdPOP31.Password := 'passwort';
IdPOP31.Connect;
Alles andere auf Default lassen.

Ergebnis (per StatusInfo ausgelesen):
Zitat:
Resolving hostname pop.gmail.com.
Connecting to 74.125.79.111.
SSL status: "before/connect initialization"
SSL status: "before/connect initialization"
SSL status: "SSLv3 write client hello A"
SSL status: "SSLv3 read server hello A"
SSL status: "SSLv3 read server certificate A"
SSL status: "SSLv3 read server done A"
SSL status: "SSLv3 write client key exchange A"
SSL status: "SSLv3 write change cipher spec A"
SSL status: "SSLv3 write finished A"
SSL status: "SSLv3 flush data"
SSL status: "SSLv3 read server session ticket A"
SSL status: "SSLv3 read finished A"
SSL status: "SSL negotiation finished successfully"
SSL status: "SSL negotiation finished successfully"
Cipher: name = RC4-MD5; description = RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5
; bits = 128; version = TLSv1/SSLv3;
Connected.
Anzahl E-Mails:0
Disconnecting.
SSL status: "SSL negotiation finished successfully"
Disconnected.
Fürs das Checken hab ich noch eine TIdMessage Komponente auf die Form gezogen und diesen Code verwendet:
Delphi-Quellcode:
var
  i, MsgAnz: Integer;
begin
  IdPOP31.Host := 'pop.gmail.com';
  IdPOP31.Port := 995; // Port für Secure POP3
  IdPOP31.UseTLS := utUseImplicitTLS; // wichtig, gmail akzeptiert nichts anderes!
  IdPOP31.Username := 'meinname@gmail.com';
  IdPOP31.Password := 'passwort';
  IdPOP31.Connect;
  // mails checken
  MsgAnz := IdPOP31.CheckMessages;
  Memo1.Lines.Add('Anzahl E-Mails:' + IntToStr(MsgAnz));
  for i:= 1 to MsgAnz do
  begin
    idpop31.RetrieveHeader(i, IdMessage1);
    Memo1.Lines.Add('E-Mail Nr:' + IntToStr(i)+ sLineBreak +
      ' Von:' + IdMessage1.From.Text + sLineBreak +
      ' Betreff:' + IdMessage1.Subject);
    IdMessage1.Clear;
  end;
  IdPOP31.Disconnect;
end;
Natürlich muß POP3 in den GMail-Einstellungen per Webinterface explizit eingeschaltet werden. Dann geht das mit den aktuellen Indys und OpenSSL aber einwandfrei. Ich hoffe, es hilft Dir etwas weiter!

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat