Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdPOP3 + SSL: Immer "Connection closed gracefully" (https://www.delphipraxis.net/134587-idpop3-ssl-immer-connection-closed-gracefully.html)

OG Karotte 27. Mai 2009 19:18

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Wo ist dann das Problem... :gruebel:

lastwulf 27. Mai 2009 19:20

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Mein eigener Code in #1, der in meinem Programm eingebettet ist, funktioniert aus irgendeinem Grund nicht.

OG Karotte 27. Mai 2009 19:30

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Dann vergleiche noch mal gaaaaaanz genau...

... wie gesagt meist ist es nur eine Kleinigkeit (und die evtl. auch noch an ganz anderer Stelle als vermutet; z.B. wird in #12 des besagten Threads von Assertor darauf hingewiesen, das gmail nur mit 'utUseImplicitTLS' funktioniert. Ausserdem scheint auch SSLv3 benötigt zu werden).

lastwulf 27. Mai 2009 19:54

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Ich glaube ich konnte das Problem, aber nicht die Ursache finden.
In IdPOP3.Connect:

Delphi-Quellcode:
  if (IOHandler is TIdSSLIOHandlerSocketBase) then begin
      case FUseTLS of
       utNoTLSSupport :
       begin
        (IOHandler as TIdSSLIOHandlerSocketBase).PassThrough := true;
       end;
       utUseImplicitTLS :
       begin
         (IOHandler as TIdSSLIOHandlerSocketBase).PassThrough := False;
       end
       else
        if FUseTLS<>utUseImplicitTLS then begin
         (IOHandler as TIdSSLIOHandlerSocketBase).PassThrough := true;
        end;
      end;
  end;
(IOHandler is TIdSSLIOHandlerSocketBase) Ist im funktionierenden Code wahr, in meinem falsch. Das kann ich mir nicht erklären, da in beiden Codes IdPOP3 der IOHandler IdSSLIOHandlerSocketOpenSSL zugewiesen wird.

OG Karotte 27. Mai 2009 20:23

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Erzeugst Du den Handler / Pop3 immer noch händisch oder liegen die Teile auf der Form?

Kann es evtl. sein das Du im Objektinspektor entweder für den die IOHandler- und/oder die POP3- Komponente etwas anderes als die defaultwerte eingetragen hast, die dann im Code von Dir nicht angepasst werden?

Also zum Beispiel bei dem IOHandler die zuverwendende IPVersion oder die SSLOptions?

Ist UseTLS auf utUseImplicitTLS ???

Zeig doch nochmal den aktuellen Code....

lastwulf 27. Mai 2009 21:15

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Zitat:

Zitat von OG Karotte
Erzeugst Du den Handler / Pop3 immer noch händisch oder liegen die Teile auf der Form?

Liegen in der Form.

Zitat:

Zitat von OG Karotte
Kann es evtl. sein das Du im Objektinspektor entweder für den die IOHandler- und/oder die POP3- Komponente etwas anderes als die defaultwerte eingetragen hast, die dann im Code von Dir nicht angepasst werden?
Also zum Beispiel bei dem IOHandler die zuverwendende IPVersion oder die SSLOptions?

Ja, aber das sind die selben Werte wie im funktionierenden Code


Zitat:

Zitat von OG Karotte
Ist UseTLS auf utUseImplicitTLS ???

Ja

Zitat:

Zitat von OG Karotte
Zeig doch nochmal den aktuellen Code....

Ok :)

In der unit1.pas:
Delphi-Quellcode:
    idssliohandlersocketopenssl1 := Tidssliohandlersocketopenssl.Create(nil);
    idpop31 := tidpop3.Create(nil);
    idpop31.Host := server;
    idssliohandlersocketopenssl1.Host := server;
    idssliohandlersocketopenssl1.Destination := server +':995';
    idpop31.Username := user;
    idpop31.Password := password;

     try
        idpop31.Connect;
     except
       on E : Exception do
       begin
        Memo1.Lines.Add('ERROR: '+E.Message+' // '+E.ClassName);
       end;
     end;
In Unit1.dfm:

Delphi-Quellcode:
  object IdPOP31: TIdPOP3
    OnStatus = IdPOP31Status
    IOHandler = IdSSLIOHandlerSocketOpenSSL1
    AutoLogin = True
    UseTLS = utUseImplicitTLS
    Port = 995
    SASLMechanisms = <>
    Left = 432
    Top = 16
  end
  object IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL
    OnStatus = IdSSLIOHandlerSocketOpenSSL1Status
    MaxLineAction = maException
    Port = 995
    DefaultPort = 0
    SSLOptions.Method = sslvSSLv3
    SSLOptions.Mode = sslmUnassigned
    SSLOptions.VerifyMode = []
    SSLOptions.VerifyDepth = 0
    OnStatusInfo = IdSSLIOHandlerSocketOpenSSL1StatusInfo
    Left = 440
    Top = 48
  end

OG Karotte 28. Mai 2009 13:37

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Durch

Delphi-Quellcode:
idssliohandlersocketopenssl1 := Tidssliohandlersocketopenssl.Create(nil);
    idpop31 := tidpop3.Create(nil);
und

Delphi-Quellcode:
object IdPOP31: TIdPOP3
...
object IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL
...
erzeugst Du meiner Meinung nach zweimal das jeweilige Objekt:

1. Beim Initialisieren der Form werden die Objekte erzeugt / initialisiert (mit den Werten aus dem OI)
2. Irgendwann in Deinem Code (k.A. wann genau, da die aufrufende / beinhaltende Funktion nicht zu sehen ist, aber aufjedenfall nach 1.) werden diese quasi nochmals erzeugt / initialisiert (und zwar mit ihren Default :!: -Werten)

Hast Du also im OI bestimmte Werte geändert, so sind diese durch die erneute Erzeugung/ Initialisierung verloren bzw. durch die Defaultwerte überschrieben. Dies erklärt warum z.B. die Routine

Delphi-Quellcode:
procedure TForm1.IdSSLIOHandlerSocketOpenSSL1StatusInfo(Msg: String);
begin
Memo1.Lines.Add('idSSL: ' +Msg);
end;
quasi nie aufgerufen wird (und damit natürlich auch kein Ergebnis liefern kann), da sie im Objekt:
Delphi-Quellcode:
idssliohandlersocketopenssl1 := Tidssliohandlersocketopenssl.Create(nil);
nicht vorhanden / gesetzt ist.

lastwulf 28. Mai 2009 18:14

Re: IdPOP3 + SSL: Immer "Connection closed gracefully&a
 
Danke für die Hilfe. Bin mittlerweile auf Delphi 2009 umgestiegen. Funktioniert soweit.
Nur die üblichen paar Bugs :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz