AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy: POP und SSL - wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Indy: POP und SSL - wie?

Ein Thema von ManuMF · begonnen am 19. Mär 2009 · letzter Beitrag vom 28. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#1

Indy: POP und SSL - wie?

  Alt 19. Mär 2009, 23:51
Hallo,

ich schreibe an einem Programm, das meine Adressen auf neue Mails überprüft. Dabei verwende ich IdPOP3. Das funktioniert bisher relativ gut.

Für die GoogleMail-Adresse bräuchte ich nun SSL. Wie kann ich das mit den Indys realisieren?

Ich habe 2 Komponenten gefunden, die etwas mit SSL zu tun haben - weiß aber weder, welche von beiden ich brauche, noch wie ich sie einstellen muss.
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Thomas Horstmann

Registriert seit: 25. Apr 2007
Ort: NRW
87 Beiträge
 
Delphi 12 Athens
 
#2

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 01:07
Hallo,

das Ganze läuft über "TIdOpenSSL". Die Komponente in der IDE anlegen und mit "TIdSMTP" bzw. "TIdPOP" verknüpfen.
Die OpenSSL Dateien "libeay32.dll" und "ssleay32.dll" müssen installiert sein (System) oder im Programm-Ordner liegen.

Ggf. muss "UseTLS" und die "Ports" für SSL angepasst werden. Je Nachdem was der Mail-Server verlangt.

Viele Grüße

Delphi-Quellcode:
Standard/gebräuchliche Ports:

POP3, Standard = 110
POP3, SSL = 995

SMTP, Standard = 25 oder 587
SMTP, SSL = 25 oder 587

IMAP, Standard = 143
IMAP, SSL = 993
Delphi-Quellcode:
...
Info: Die Variablen MyUseSSL und MySSLType werden im Vorfeld definiert.
...
with IdPOP do
  begin
  if MyUseSSL = TRUE then
    begin
    { Mit SSL }
    IOHandler := IdOpenSSL ;
    if MySSLType = 'Explicitthen UseTLS := utUseExplicitTLS ;
    if MySSLType = 'Implicitthen UseTLS := utUseImplicitTLS ;
    if MySSLType = 'Require'  then UseTLS := utUseRequireTLS ;
    end
  else
    begin
    { Ohne SSL }
    IOHandler := nil ;
    UseTLS := utNoTLSSupport ;
    end ;
  { Anmelden }
  Connect ;
  end ;
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#3

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 11:27
Hallo,

danke schonmal soweit

TIdOpenSSL habe ich nicht, nur die beiden anderen Komponenten. Die eine (halte ich für die eher richtige) heißt TIdSSLIOHandlerSocketOpenSSL. Meinst du die? Die hat auch nochmal Einstellungen für Host und Port, muss ich die auch einstellen?
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Assertor

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

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 11:58
Hi ManuMF,

Zitat von ManuMF:
TIdOpenSSL habe ich nicht, nur die beiden anderen Komponenten. Die eine (halte ich für die eher richtige) heißt TIdSSLIOHandlerSocketOpenSSL. Meinst du die? Die hat auch nochmal Einstellungen für Host und Port, muss ich die auch einstellen?
Richtig, die Komponente heißt TIdSSLIOHandlerSocketOpenSSL. Die Einstellungen kannst Du so lassen. In der anderen Komponente POP/HTTP/FTP verknüpfst Du den IOHandler damit. Und die OpenSSL DLLs müssen in das Programmverzeichnis Deiner Anwendung gelegt werden (auch bei den Nutzern wenn diese installiert wird).

Link zu den DLLs:
http://indy.fulgan.com/SSL/

Da dann bitte die openssl-0.9.8j-i386-win32.zip nehmen (bzw. falls der Thread später mal gelesen wird, die jeweils aktuellste für Win32 oder Win64 je nach System und Delphi).

Achtung: Die "neuen" DLLs gehen aber nur mit einer aktuellen Indy Version, z.B. der mit Delphi 2009 ausgelieferten oder einer selbst aktualisierten Version von unserem SVN.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Thomas Horstmann

Registriert seit: 25. Apr 2007
Ort: NRW
87 Beiträge
 
Delphi 12 Athens
 
#5

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 11:59
Hallo,

entschuldigung ich hatte das Objekt in der IDE umbenannt. "TIdSSLIOHandlerSocketOpenSSL" ist richtig.
Die Ports setze ich nicht in dieser Komponente (steht beim mir auf "0"), sondern in "TIdSMTP" bzw. "TIdPOP".

Ich kann mich Assertor nur anschließen. Am besten immer einen aktuellen "Snapshop" benutzen. Vor allem bei
D2009. Gerade bei Mails (Encode/Decode) hat sich in den letzten Tagen einiges getan.

Viele Grüße
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#6

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 13:40
Super, danke, probier ich gleich aus!

Noch eine Frage: In Thunderbird kann ich entweder TLS oder SSL wählen, für Google ist SSL gewählt. Welche der drei Möglichkeiten für TLS (UseTLS) muss ich in meinem Programm nehmen?
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Assertor

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

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 13:51
Hi,

Zitat von ManuMF:
Noch eine Frage: In Thunderbird kann ich entweder TLS oder SSL wählen, für Google ist SSL gewählt. Welche der drei Möglichkeiten für TLS (UseTLS) muss ich in meinem Programm nehmen?
Sollte mit explicit TLS gehen.

Schau Dir mal das Beispiel zu Indy + Google Mail von Marco Cantu dazu an:
http://www.marcocantu.com/tips/oct06_gmail.html

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#8

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 15:13
Habe die DLLs im Programmverzeichnis und die neueste Verison der Indys installiert.

Leider friert das Programm beim Aufruf von Connect bei GoogleMail ein. Das hatte ich auch schon mit der vorherigen Indy-Version (die mit dem automatischen Installer) und ohne IOHandler (hatte erst nicht daran gedacht, dass SSL nötig ist).

Bei z.B. T-Online (ohne SSL) funktioniert es bestens.
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Assertor

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

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 15:32
Zitat von ManuMF:
Leider friert das Programm beim Aufruf von Connect bei GoogleMail ein. Das hatte ich auch schon mit der vorherigen Indy-Version (die mit dem automatischen Installer) und ohne IOHandler (hatte erst nicht daran gedacht, dass SSL nötig ist).
Probier mal im SSL Handler die SSLOptions.Method auf sslvTLSv1 und wenn das nicht geht auf sslvSSLv23 zu setzen.

Bekommst Du denn keine Fehlermeldung? Welche Domain willst Du nutzen? Zeig mal etwas Code...

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#10

Re: Indy: POP und SSL - wie?

  Alt 20. Mär 2009, 15:52
Bei der Methode habe ich alle probiert, immer das gleiche Ergebnis.

Der eigentlich Prüf-Code:
Delphi-Quellcode:
function POP3MailCheck(aServer, aUser, aPasswort: String; aPort: Integer; aSSL: Boolean): TPopCheckInfo;
begin
  with MCForm.POPInterface do
  begin
    if (Connected) then
      Disconnect;

    Host := aServer;
    Port := aPort;
    Username := aUser;
    Password := aPasswort;

    If aSSL then
    begin
      IOHandler := MCForm.POP_SSL;
      UseTLS := utUseExplicitTLS;
    end
    else
    begin
      IOHandler := nil;
      UseTLS := utNoTLSSupport ;
    end;

    try
      Connect;
    except
      on E: Exception do
      begin
        result.PMails := 0;
        result.PError := true;
        result.PErrorMsg := TranslateError(E.Message); // Eigene Funktion (Error-Nummer --> Text)
        exit;
      end;
    end;

    result.PMails := CheckMessages;
    result.PError := false;
    result.PErrorMsg := '';

    Disconnect;
  end;
end;
wobei POPInterface TIdPop3 und POP_SSL der SS-IOHandler sind.

Mit T-Online funktioniert das wie gesagt, aber bei GoogleMail friert das Programm bei Connect ein. Keine Fehlermeldung. Er versucht jedenfalls, sich zu verbinden, weil die Firewall nachfragt (was ich selbstverständlich erlaube). Aber schon die nächste Zeile wird nicht erreicht.

Für das Einfrieren ist es völlig gleich, ob ich einen IOHandler verwende oder nicht und wenn ja ob die DLLs da sind oder nicht.

Edit: Da ich ja nun auch die pas-Dateien habe, habe ich mal einen Breakpoint gesetzt und geschaut, wie weit er kommt. Bei der Funktion Stub_connect in der IdWinsock2.pas passiert nichts mehr.

Edit2: Ups, die Daten. pop.googlemail.com:995.
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz