Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Indy Mail Probleme bei Android 64 Bit App (https://www.delphipraxis.net/214532-indy-mail-probleme-bei-android-64-bit-app.html)

skoschke 25. Jan 2024 07:08

Indy Mail Probleme bei Android 64 Bit App
 
Hallo,

eine seit Jahren bestehende Android App (bisher als 32 Bit Version verteilt) wird nun auf 64 Bit umgestellt.
Seit diesem Zeitpunkt geht der Mailzugriff nicht mehr. Testweise eingeführte Messages sagen "Fehler Connect"

Delphi-Quellcode:
function TFormZugang.TestVerbindungEingang(): integer;
var
  IdPOP31: TIdPOP3;
  IOHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
  // Result 0 = Connect Fehler, 1 = Login Fehler, 2 = fehlerfrei
  Result := 0;
  try
    IdPOP31 := TIdPOP3.Create(self);
    IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdPOP31);
    IdPOP31.AutoLogin := false;
    IdPOP31.Port := settings.zugangPOP3Port;
    IdPOP31.ConnectTimeout := 20000;
    if not IdPOP31.Connected then
    begin
      IdPOP31.Host := settings.zugangPOP3;
      if SSL.IsChecked then
      begin
        // allg. Procedure zum Setzen der SSL-Parameter
        Set_SSL_POP3(IdPOP31, IOHandler);
      end
      else
      begin
        IdPOP31.IOHandler := Nil;
        IdPOP31.UseTLS := utNoTLSSupport;
      end;
      IdPOP31.Username := settings.zugangBenutzer;
      IdPOP31.Password := settings.zugangPasswort;
      try
        sleep(300);
        IdPOP31.Connect;
        Result := 1;
      except
        on E: Exception do
        begin
          showmessage('Fehler Connect');
          IdPOP31.DisposeOf;
          exit;
        end;
      end;
      try
        sleep(300);
        IdPOP31.Login;
        Result := 2;
      except
        on E: Exception do
        begin
          showmessage('Fehler Login');
          IdPOP31.DisposeOf;
          exit;
        end;
      end;
      if IdPOP31.Connected then
      begin
        IdPOP31.DisConnect;
      end;
    end;
    IdPOP31.DisposeOf;
  except
    on E: Exception do
      LogAusgabe(E.ClassName + ' in TFormZugang.TestverbindungEingang : ' +
        E.Message);
  end;
end;
und
Delphi-Quellcode:
procedure Set_SSL_POP3(var pop3: TIDPOP3;
  var SSLIoHandler: TIdSSLIOHandlerSocketOpenSSL);
begin
  SSLIoHandler.DefaultPort := 0;
  SSLIoHandler.SSLOptions.Method := sslvSSLv23;
  SSLIoHandler.SSLOptions.Mode := sslmClient;
  SSLIoHandler.SSLOptions.VerifyMode := [];
  SSLIoHandler.SSLOptions.VerifyDepth := 0;
  pop3.IOHandler := SSLIoHandler;
  pop3.UseTLS := utUseImplicitTLS;
  SSLIoHandler.Destination := pop3.Host + ':' + IntToStr(pop3.Port);
end;
Ich finde leider keinen Ansatz, was bei den Indys umgestellt werden müsste, wenn man sie unter Android 64 Bit verwenden möchte!
Kann mir bitte jemand einen Tip geben?
Achso: SSL ist an und der Port ist 465, falls das relevant ist...

Ciao
Stefan

jaenicke 25. Jan 2024 07:22

AW: Indy Mail Probleme bei Android 64 Bit App
 
Zitat:

Zitat von skoschke (Beitrag 1532530)
Testweise eingeführte Messages sagen "Fehler Connect"

Du hast leider vergessen die Exception-Message mit auszugeben. Da bringt die Meldung sehr wenig...

skoschke 25. Jan 2024 07:49

AW: Indy Mail Probleme bei Android 64 Bit App
 
Hallo

Die Fehlermeldung habe ich jetzt abgefangen, es ist "SSL Bibliothek konnte nicht geladen werden"

Ich habe mir von Github die "openssl-1.02s_Android.zip" heruntergeladen aus dem arm64-v8a-Verzeichnis die libcrypto.so und libssl.so in der Bereitstellung unter assets/internal/ eingebunden.

Wo liegt mein Fehler?

Ciao
Stefan

philipp.hofmann 25. Jan 2024 11:05

AW: Indy Mail Probleme bei Android 64 Bit App
 
Du musst die 32-Bit-Libraries in
library\lib\armeabi-v7a\
und die 64-Bit-Libraries in
library\lib\arm64-v8a\
ablegen. Wenn du wirklich nur 64-Bit builden willst, kannst du auf die 32-Bit-Libraries verzichten. Wenn du aber die aab-Datei bei Google hochladen möchtest, brauchst du beides.

Ich lade die Libraries folgendermaßen:

Delphi-Quellcode:
procedure TicTrainerF.initSSL();
{$IFNDEF IOS}
var help2: String;
{$ENDIF}
begin
  if (not sslInited) then
  begin
    sslInited:=true;
    {$IFDEF ANDROID}
      IdOpenSSLSetLibPath(String.Empty);
    {$ENDIF}
    {$IFDEF IOS}
    {$ELSE}
      {$IFDEF MACOS}
        IdOpenSSLSetCanLoadSymLinks(false);
        IdOpenSSLSetLoadSymLinksFirst(false);
        IdOpenSSLSetLibPath(TPath.GetDirectoryName(ParamStr(0)));
        mlog.info('InitSSL from ' + TPath.GetDirectoryName(ParamStr(0)));
      {$ENDIF}
    {$ENDIF}
    {$IFDEF MSWINDOWS}
      IdOpenSSLSetLibPath(TPath.GetDirectoryName(ParamStr(0)));
      mlog.info('InitSSL from ' + TPath.GetDirectoryName(ParamStr(0)));
      SmtpMailFrom:=MESettings().MailAddr;
    {$ENDIF}

    IdSSLOpenSSLHeaders.Load();
    {$IFDEF ANDROID}
      help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
      if (length(help2) > 0) then
      begin
        IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetLibraryPath));
        IdSSLOpenSSLHeaders.Load();
        help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
        if (length(help2) > 0) then
        begin
          IdOpenSSLSetLibPath(IncludeTrailingPathDelimiter(TPath.GetDocumentsPath));
          IdSSLOpenSSLHeaders.Load();
          mlog.info('SSL-Version(3): ' + OpenSSLVersion);
          help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
          if (length(help2) > 0) then
          begin
            mlog.info('SSL-Errors: ' + help2);
          end;
        end else begin
          mlog.info('SSL-Version(2): ' + OpenSSLVersion);
        end;
      end else begin
        mlog.info('SSL-Version(1): ' + OpenSSLVersion);
      end;
    {$ELSE}
      mlog.info('SSL-Version: ' + OpenSSLVersion);
      {$IFNDEF IOS}
        help2:=IdSSLOpenSSLHeaders.WhichFailedToLoad();
        if (length(help2) > 0) then
          mlog.info('SSL-Errors : ' + help2);
      {$ENDIF}
    {$ENDIF}
  end;
end;

skoschke 26. Jan 2024 07:27

AW: Indy Mail Probleme bei Android 64 Bit App
 
Vielen herzlichen Dank, Du hast meinen Tag gerettet!

Jetzt funktioniert der Mailversand bei mir auch wieder in 64 Bit!

Ciao
Stefan


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