2016-05-27 9 views
2

Ich möchte eine E-Mail über den GMail-Server senden.Email kann nicht (via GMail) mit Indy gesendet werden. Protokoll-Versionskonflikt

TRY 
    SMTP.Connect;  // <---- This is TIdSMTP 
    EXCEPT 
    Log.AddError('Cannot connect to the email server.'); 
    END; 

    if SMTP.Connected then 
    TRY 
    SMTP.Send(MailMessage); 
    EXCEPT 
    on E:Exception DO 
     begin 
     Log.AddError('Connected to server but could not send email!'); 
     Log.AddError(E.Message); 
     end; 
    END; 

if SMTP.Connected 
then SMTP.Disconnect; 

Dieser Codeabschnitt arbeitete 2014 mit Delphi XE.

Das Programm verbindet sich mit dem Server in Ordnung, aber am Ende heißt es „SSL auf diesem Server nicht verfügbar ist“:

Resolving hostname smtp.Gmail.com. 
Connecting to 74.125.xxx.xxx 
Connected. 
Connected to SMTP server... 
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 hello A" 
Disconnected. 
Connected to server but could not send email! 
SSL is not available on this server. 

ich die neueste Version von OpenSSL (heruntergeladen heute) und Delphi XE7 haben.
Die Wireshark sagt:

Alert (Level: Fatal, Beschreibung: Protokollversion)

Warum kann ich keine E-Mail schicken?
Ich habe alle ausprobiert: keine TSL, implizit, explizit, startTSL ...

enter image description here

Antwort

4

LÖSUNG: sslvTLSv1 muss im SSLIOHandler.SSLVersions Eigenschaft enthalten sein.

+0

ALLE Version kann aktiviert werden (nicht nur v1 und v3) nur um auf der sicheren Seite zu sein (stellen Sie sicher, der Code funktioniert mit allen E-Mail-Servern) ... – Ampere

+0

Danke WireShark. – Ampere

+2

Es gibt kein 'sslvSSLv1'. Sie denken stattdessen an 'sslvTLSv1'. –