Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Bringe email an gmx nicht zum laufen... (https://www.delphipraxis.net/179978-bringe-email-gmx-nicht-zum-laufen.html)

Schlingel 15. Apr 2014 12:34

Bringe email an gmx nicht zum laufen...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

Ich hatte schon geraume Zeit einen email Versand über gmx problemlos am Laufen. (Indy 10.5.8 & XE2)
Jetzt nach der SSL-Umstellung habe ich das Problem das die Authentifizierung nicht funktioniert. :oops:

Über gmail funktioniert es einwandfrei.

Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
var
  smtp: TIdSMTP;
  ssl: TIdSSLIOHandlerSocketOpenSSL;
  msg: TIdMessage;
  log: TIdLogEvent;
  i: Integer;
begin
  smtp := TIdSMTP.Create(nil);
  ssl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  msg := TIdMessage.Create(nil);
  log := TIdLogEvent.Create(nil);
  log.OnConnect := logConnect;
  log.OnDisconnect := logDisconnect;
  log.OnReceived := logReceived;
  log.OnSent := logSent;
  log.OnStatus := logStatus;

  smtp.Intercept := log;
  ssl.Intercept := log;

  try
    try
      log.Active := True;
      smtp.Host := 'smtp.gmail.com';// <- funktioniert

      // mail.gmx.net <- Problem authentifizierung

      smtp.Port := 587;
      smtp.Username := 'USERNAME@gmail.com'; // USERNAME@gmx.at
      smtp.Password := 'PASSWORD'; // PASSWORD

      ssl.Host := smtp.Host;
      ssl.Port := smtp.Port;
      ssl.SSLOptions.Method := sslvTLSv1;

      smtp.IOHandler := ssl;
      smtp.UseTLS := utUseRequireTLS;

      msg.Recipients.EMailAddresses := 'hans.mustermann@gmx.at';// irgendeine Test Adresse
      msg.Subject := 'This is the subject';
      msg.Body.Text := 'This is the body of the email....';

      smtp.Connect;
      smtp.Send(msg);
      smtp.Disconnect;

      Memo1.Lines.Add('*** email transfer successful ***');
      log.Active := False;
    finally
      log.Free;
      msg.Free;
      ssl.Free;
      smtp.Free;
    end;
  except
    Memo1.Lines.Add('*** email transfer not successful ***');
  end;
end;

procedure TMainForm.logConnect(ASender: TIdConnectionIntercept);
begin
  Memo1.Lines.Add('*** Connect ***');
end;

procedure TMainForm.logDisconnect(ASender: TIdConnectionIntercept);
begin
  Memo1.Lines.Add('*** Disconnect ***');
end;

procedure TMainForm.logReceived(ASender: TComponent;
  const AText, AData: string);
begin
  Memo1.Lines.Add(AText + ' REC: ' + AData);
end;

procedure TMainForm.logSent(ASender: TComponent; const AText, AData: string);
begin
  Memo1.Lines.Add(AText + 'SEND: ' + AData);
end;

procedure TMainForm.logStatus(ASender: TComponent; const AText: string);
begin
  Memo1.Lines.Add('*** Status: ' + AText + ' ***');
end;
Vielleicht hat jemand schon mit diesem Problem gekämpft und kann mir ein wenig auf die Sprünge helfen.

Ich habe ein kleines Test-Projekt angehängt.

Vorab danke für jedigliche Hilfestellung

Schlingel

Klaus01 15. Apr 2014 12:53

AW: Bringe email an gmx nicht zum laufen...
 
Hallo,

welchen SMTP port nutzt Du für GMX?
Bei meinem MailClient (TheBat) habe ich als
SMTP Server: mail.gmx.net
Port: 465
Connection: Secure to dedicated port (TLS)

Use "POP before SMTP" authentication ist bei mir noch enabled.
Ob das bei TLS zwingend sein muss- weiß ich nicht.

Grüße
Klaus

Sherlock 15. Apr 2014 13:01

AW: Bringe email an gmx nicht zum laufen...
 
Vielleicht als Grundlage noch das hier: https://hilfe.gmx.net/sicherheit/ssl.html

Sherlock

Dalai 15. Apr 2014 13:36

AW: Bringe email an gmx nicht zum laufen...
 
Zitat:

Zitat von Klaus01 (Beitrag 1255699)
Bei meinem MailClient (TheBat) habe ich als
SMTP Server: mail.gmx.net
Port: 465
Connection: Secure to dedicated port (TLS)

Dito (und dito zu The Bat! ;)).

Zitat:

Use "POP before SMTP" authentication ist bei mir noch enabled.
Ob das bei TLS zwingend sein muss- weiß ich nicht.
Ist bei mir nicht aktiviert, ist also nicht nötig. (Wäre bei mir auch gar nicht möglich, wegen POPFile als lokalem Spamfilter-Proxy.)

MfG Dalai

Schlingel 15. Apr 2014 15:13

AW: Bringe email an gmx nicht zum laufen...
 
Hallo

@Dalai, Klausi

- Ich kenne "TheBat" nicht...
Ich möchte im Grunde genommen nur den o.a. Code wieder mit gmx zum laufen bringen.
Ob Port 587 oder Port 465 ist egal (immer die gleiche Fehlermeldung/ ~Authentifizierung nicht erfolgreich)


@Sherlock

- Dieses Dokument hatte ich schon studiert aber ich konnte nicht rausfinden wie ich dies in Delphi/Indy umsetzte.


Fact ist aber dass der o.a. Code mehrere Jahre ohne Probleme funktionierte bzw. auch heute mit gmail funktioniert. Erst mit der SSL/TSL Umstellung ging es mit gmx nicht mehr.

Vielleicht gibt es doch noch einen Experten für Verschlüsselung-, Indy und Delphi Kenntnissen?


Falls jemand ein gmx-Konto hat würde das Programm im Anhang (bzw. der Log im Memo) Licht ins Dunkel bringen?


Schlingel

DateTimeError 15. Apr 2014 15:24

AW: Bringe email an gmx nicht zum laufen...
 
Delphi-Quellcode:
ssl.SSLOptions.Method := sslvSSLv23;
funktioniert bei mir mit GMX.

hathor 15. Apr 2014 16:31

AW: Bringe email an gmx nicht zum laufen...
 
Davon abgesehen, dürfen

msg.From.Text :='';
msg.From.Name := '';
msg.From.Address := '';

nicht leer sein.

Schlingel 15. Apr 2014 17:13

AW: Bringe email an gmx nicht zum laufen...
 
Danke, Danke.....

einzig diese Zeile fehlte für "gmx":

msg.From.Address := smtp.Username;


Diese Einstellungen funktionieren beide:


ssl.SSLOptions.Method := sslvTLSv1;
ssl.SSLOptions.Method := sslvSSLv23;

Diese beiden Einstellungen sind optional(können eingetragen werden / müssen aber nicht ausgefüllt werden)


msg.From.Text :='';
msg.From.Name := '';

Ich habe mich auf die falsche Fährte führen lassen.... da es bei "gmail" ohne ging.

Danke für die Hilfe :wink::thumb::thumb::thumb::thumb::thumb:

Schlingel

hathor 15. Apr 2014 17:55

AW: Bringe email an gmx nicht zum laufen...
 
Danke für das Feedback!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 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