AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SMTP über Strato

Ein Thema von H.Bothur · begonnen am 2. Jan 2023 · letzter Beitrag vom 7. Jan 2023
Antwort Antwort
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.683 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: SMTP über Strato

  Alt 3. Jan 2023, 13:19
Sind auf dem Rechner noch andere - möglicherweise veraltete - Versionen der OpenSSL DLLs vorhanden?
Auf dem Rechner finde ich min. noch 5 mal

im Office16\odbc-Verzeichns
im Embarcader/Studio(21-Verzeichnis
im AusweisApp2-Verzeichnis ... und und und

Und natürlich alle mit unterschiedlichen Daten.
Wie kann man denn feststellen weklche Version geladen worden ist ?
Wird nicht beim Debugging im Event-Log der IDE angezeigt, welche DLLs geladen werden (module load)? Dann die Version zu ermitteln dürfte nicht schwer sein.
Thomas Mueller
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
259 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SMTP über Strato

  Alt 3. Jan 2023, 13:35

Wird nicht beim Debugging im Event-Log der IDE angezeigt, welche DLLs geladen werden (module load)? Dann die Version zu ermitteln dürfte nicht schwer sein.
In den Ereignissen wird das Ladender SSLEAY32.DLL angezeigt - aber nicht mit einem Pfad oder so.
Und wie ermittle ich den die Version ?

gruss
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
230 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: SMTP über Strato

  Alt 3. Jan 2023, 13:42
Delphi-Quellcode:
unit CheckOpenSSLUnit;

interface

uses WinApi.Windows, System.SysUtils, vcl.Dialogs;

  procedure CheckOpenSSL;

implementation

procedure CheckOpenSSL;
var
  ssleay32, libeay32: HMODULE;
  ModulePath: array[0..MAX_PATH] of Char;
  VerInfoSize: Cardinal;
  VerInfo: Pointer;
  VerValueSize: Cardinal;
  VerValue: PVSFixedFileInfo;
  sPathSsleay32: string;
  sPathLibeay32: string;
  sVerInfoSsleay32: String;
  sVerInfoLibeay32: String;
  Dummy: Cardinal;
begin
  ssleay32 := LoadLibrary('ssleay32.dll');
  if ssleay32 <> 0 then
  begin
    Dummy := ssleay32;
    GetModuleFileName(ssleay32, ModulePath, length(ModulePath));
    sPathSsleay32 := String(ModulePath);
    //--
    VerInfoSize := GetFileVersionInfoSize(PChar(sPathSsleay32), Dummy);
    GetMem(VerInfo, VerInfoSize);
    GetFileVersionInfo(PChar(sPathSsleay32), 0, VerInfoSize, VerInfo);
    VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
    sVerInfoSsleay32 := 'Version '+IntToStr(VerValue^.dwFileVersionMS shr 16);
    sVerInfoSsleay32 := sVerInfoSsleay32 + '.' + IntToStr(VerValue^.dwFileVersionMS and $FFFF);
    sVerInfoSsleay32 := sVerInfoSsleay32 + '.' + IntToStr(VerValue^.dwFileVersionLS shr 16);
    sVerInfoSsleay32 := sVerInfoSsleay32 + '.' + IntToStr(VerValue^.dwFileVersionLS and $FFFF);
  end;

  libeay32 := LoadLibrary('libeay32.dll');
  if libeay32 <> 0 then
  begin
    Dummy := libeay32;
    GetModuleFileName(libeay32, ModulePath, length(ModulePath));
    sPathLibeay32 := String(ModulePath);
    //--
    VerInfoSize := GetFileVersionInfoSize(PChar(sPathLibeay32), Dummy);
    GetMem(VerInfo, VerInfoSize);
    GetFileVersionInfo(PChar(sPathLibeay32), 0, VerInfoSize, VerInfo);
    VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
    sVerInfoLibeay32 := 'Version '+IntToStr(VerValue^.dwFileVersionMS shr 16);
    sVerInfoLibeay32 := sVerInfoLibeay32 + '.' + IntToStr(VerValue^.dwFileVersionMS and $FFFF);
    sVerInfoLibeay32 := sVerInfoLibeay32 + '.' + IntToStr(VerValue^.dwFileVersionLS shr 16);
    sVerInfoLibeay32 := sVerInfoLibeay32 + '.' + IntToStr(VerValue^.dwFileVersionLS and $FFFF);
  end;
  Showmessage(sPathSsleay32+' - '+sVerInfoSsleay32+#10+sPathLibeay32+' - '+sVerInfoLibeay32);
end;

end.
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
259 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: SMTP über Strato

  Alt 3. Jan 2023, 14:00
unit CheckOpenSSLUnit;
Vielen Dank !!! Damit steht schonmal fest das die richtige DLL geladen worden ist:

aus dem richtigen Verzeichnis (Programmverzeichnis)
Und Version ist 1.0.2.21

Und wie komme ich jetzt weiter ?

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#5

AW: SMTP über Strato

  Alt 3. Jan 2023, 14:04
Aus https://www.delphipraxis.net/1456935-post3.html:

Delphi-Quellcode:
{$IFDEF ANDROID}
    IdOpenSSLSetLibPath(String.Empty);
    IdSSLOpenSSLHeaders.Load();
    error:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
    if (length(error)>0) then
    begin
      IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetLibraryPath));
      IdSSLOpenSSLHeaders.Load();
      error:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
      if (length(error)>0) then
      begin
        IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetDocumentsPath));
        IdSSLOpenSSLHeaders.Load();
        log.d('SSL-Version(3): '+OpenSSLVersion);
        error:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
        if (length(error)>0) then
        begin
          log.d('SSL-Errors: '+error);
        end;
      end else begin
        log.d('SSL-Version(2): '+OpenSSLVersion);
      end;
    end else begin
      log.d('SSL-Version(1): '+OpenSSLVersion);
    end;
  {$ENDIF}
Das könnte hier helfen, um die aktuell verwendete Version von OpenSSL zu ermitteln.

Die Funktion OpenSSLVersion ist in der Indy-Unit Protocols/IdSSLOpenSSL enthalten.
Michael Justin

Geändert von mjustin ( 3. Jan 2023 um 14:07 Uhr)
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
230 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: SMTP über Strato

  Alt 3. Jan 2023, 14:14
Also wenn die Firewall für den Port frei ist und es die 32Bit oder 64Bit DLL ist dann sollte es gehen. Verlangt Strato 1.2 TLS?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#7

AW: SMTP über Strato

  Alt 3. Jan 2023, 14:18
Also wenn die Firewall für den Port frei ist und es die 32Bit oder 64Bit DLL ist dann sollte es gehen. Verlangt Strato 1.2 TLS?
Unterstützt werden nur TLS 1.2 oder 1.3 (laut https://www.strato.de/faq/mail/wie-k...und-empfangen/)
Michael Justin
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
230 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: SMTP über Strato

  Alt 3. Jan 2023, 14:31
So wird es bei uns gemacht:

Delphi-Quellcode:
function SendSMTP(ESMTP:TSMTP;Von,An,CC,BCC,Body,ContentType:String):Boolean;
var
  I,J : Integer;
  RS,TS : TStringList;
begin
  RESULT:=False;
  TS:=TStringList.Create;
  RS:=TStringList.Create;
  try
    IdMessage.ContentType:=ContentType;
    IdMessage.CCList.Clear;
    IdMessage.From.Address:=Von;
    TS.CommaText:=CC;
    For I:=0 to TS.Count-1 do
    begin
      IdMessage.CCList.Add.Address:=TS.Strings[i];
    end;
    IdMessage.BccList.Clear;
    TS.CommaText:=BCC;
    For I:=0 to TS.Count-1 do
    begin
      IdMessage.BccList.Add.Address:=TS.Strings[i];
    end;
    IdMessage.Recipients.Clear;
    RS.CommaText:=An;
    For J:=0 to RS.Count-1 do
    begin
      IdMessage.Recipients.Add.Address:=RS.Strings[J];
    end;
    IDMessage.Body.Text:=Body;
    //--
    IdSmtp.Host := ESMTP.Host;
    IdSmtp.Username := ESMTP.User;
    IdSmtp.Password := ESMTP.Passwort;
    IdSmtp.Port := ESMTP.Port;
    case ESMTP.Authen of
      0: IdSmtp.AuthType := satDefault;
      1: IdSmtp.AuthType := satNone;
      2: IdSmtp.AuthType := satSASL;
     else
    end;
    //--
    IdSmtp.Connect;
   IdSmtp.Send(IdMessage);
   RESULT:=True;
  Finally
    IdSmtp.Disconnect;
    FreeAndNil(TS);
    FreeAndNil(RS);
  end;
end;
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
259 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: SMTP über Strato

  Alt 3. Jan 2023, 14:56
Unterstützt werden nur TLS 1.2 oder 1.3 (laut https://www.strato.de/faq/mail/wie-k...und-empfangen/)
Irgendwie drehe ich gerade durch - plötzlich bekomme ich nicht mehr die Fehlermeldung sondern der Versand geht durch.

Allerdings gibt es eine Exception "Die Verbindung wurde erfolgreich geschlossen" nach dem Versand der Mail:

Delphi-Quellcode:
  try
     MailForm.IdSMTP1.Send(MailForm.IdMessage1);

  except
    on E: Exception do
    begin
       result := false;
       Application.MessageBox (PChar(E.Message),'Verbindungsfehler Versand !',MB_OK);
       MailForm.IdSMTP1.Disconnect;
       exit;
    end;
  end;
Aber warum in drei Teufels Namen ... und wie verhindere ich das diese Exception angezeigt wird ?

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:13 Uhr.
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