Frage

Ich versuche, eine E-Mail mit Google Mail-Konto (Delphi 7, Indy 10) mit diesen Einstellungen an:

TIdSmtp:

Port = 587;
UseTLS := utUseExplicitTLS;

TIdSSLIOHandlerSocketOpenSSL:

SSLOptions.Method := sslvTLSv1;

scheint alles Set in Ordnung zu sein. Ich erhalte diese Antwort:

Resolving hostname smtp.gmail.com.
Connecting to 74.125.77.109.
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 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;

Und dann hängt es und nicht beendet. E-Mail wird nicht gesendet. Was kann das Problem sein?

War es hilfreich?

Lösung 2

Das Problem war einfach. Ich war nicht geduldig genug und Anwendung nicht hängen, gibt es lange Timeout. Das Timeout war Ergebnis von falschen Einstellungen.

Andere Tipps

Ja, ich habe gesehen, viele Probleme mit Indy10 und tls (in der Regel gmail).

zuerst sicherstellen, dass Sie die neueste ssl Bibliotheken von hier

Ich habe intermittierende Stände und Fehler gesehen, die in der bleeding edge Version von indy behoben wurden (dh. Eine nicht-stabile Version). finden Sie unter http://www.indyproject.org/sockets/download/svn.DE aspx

für gmail, i allgemein implicityTLS auf Port 465 verwenden ..

  idSmtp := TIdSMTP.Create(nil);
  try
    idSmtp.IOHandler := nil;
    idSmtp.ManagedIOHandler := true;

    // try to use SSL
    try
      TIdSSLContext.Create.Free;
      idSmtp.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(idSmtp);
      if (smtpSettings.port = 465) then
        idSmtp.UseTLS := utUseImplicitTLS
      else
        idSmtp.UseTLS := utUseExplicitTLS;
    except
      idSmtp.IOHandler.Free;
      idSmtp.IOHandler := nil;
    end;

    if (idSmtp.IOHandler = nil) then
    begin
      idSmtp.IOHandler := TIdIOHandler.MakeDefaultIOHandler(idSmtp);
      idSmtp.UseTLS := utNoTLSSupport;
    end;

    // send message, etc

  finally
    idSmtp.Free;
  end;

Als erstes müssen Sie den Code überprüft wird mit anderen E-Mail-Server zu arbeiten?

Vor einiger Zeit hat jemand erwähnte sie Probleme mit bestimmten Servern zu akzeptieren HTTP-Anfragen mit der Indy TIdHTTP Komponente. Der Grund war, sie hatte Indy als Teil des User-Agenten enthalten:

      Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';

Wenn sie entfernt Indy-Bibliothek es funktioniert. Offenbar gab es einige bösartige Web-Services mit Indy erstellt, so dass einige Websites Verbindungen von Anwendungen erstellt mit ablehnen wird.

Ich bin nicht sicher, ob die Komponente, die Sie verwenden, jede Art von Useragent-Eigenschaft hat. Aber wenn es funktioniert, null heraus alle Verweise auf Indy.

Wenn Indy testen, sollten Sie sicher sein, dass „Stop auf Delphi Ausnahmen“ aktiviert ist (Extras, Debugger-Optionen, Sprache Ausnahmen).

Einige Routinen, speziell idSMTP.Send, ‚frisst‘ (oder versteckt) Ausnahmen in einem resultierenden aufzuhängen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top