![]() |
Mailabruf mit IPv6 geht nicht
Hallo,
ich nutze in einer App für Android die Indy-Komponenten zum Mailabruf, bisher ohne jegliche Probleme... Jetzt meldet sich ein Anwender mit folgender Fehlerbeschreibung: kann es sein dass die App in einem reinen IPv6 Wlan keinen Connect zum Mailserver bekommt? Hatte das Problem hier - intern IPv6 Wlan - kein Connect zum Mailserver via Mobilfunk - sofern Connect zum Mailserver bei mir im Büro Intern IPv4 Wlan - ebenfalls Connect zum Mailserver Internet etc.. ging aber auch mit IPv6 Mir fehlt netzwerktechnisch etliches an Hintergrundwissen und IPv6 testen kann ich auch nicht :-( Hat jemand eine Idee, wo ich ansetzen könnte? Danke Ciao Stefan |
AW: Mailabruf mit IPv& geht nicht
Guten Morgen,
im IdSSLIOHandlerSocketOpenSSL Handler kann die zu verwendende IPVersion eingestellt werden. Hier kann aber nur IPv4 oder IPv6 eingestellt werden - leider nicht beides. Grüße Klaus |
AW: Mailabruf mit IPv6 geht nicht
Danke für den Hinweis!
Hast Du eine Idee, wie man dem Anwender helfen könnte? Ciao Stefan |
AW: Mailabruf mit IPv6 geht nicht
.. du könntest versuchen die Mail mit dem voreingestellten Protokoll (IPV4 oder IPv) abzuholen,
wenn das nicht funktioniert es mit dem anderen Protokoll versuchen. Oder im Vorfeld ermitteln welche IP Adresse dem Gerät zugewiesen wurde, wenn eine IPv6 dann den Handler auf IPv6 setzen. Eine schönere Lösung kommt mir da zur Zeit nicht in den Sinn. Grüße Klaus |
AW: Mailabruf mit IPv6 geht nicht
Danke!
|
AW: Mailabruf mit IPv6 geht nicht
Ich habe mir eine Funktion zum Auslesen der IP gemacht, in der Hoffnung, damit die richtige Einstellung für den IdSSLIOHandlerSocketOpenSSL zu finden:
Delphi-Quellcode:
Unter Windows bekomme ich die richtige, von der Fritzbox zugewiesene Adresse :-)
procedure TForm3.Button2Click(Sender: TObject);
var IPs: TStringList; IP: String; I: Integer; Err: Boolean; IDStack : TIdStack; begin IPs := TStringList.Create; try IDStack := TIdStack.Create; IDStack.IncUsage; IPs.Assign(TStringlist(GStack.LocalAddresses)); Memo1.lines := IPs; finally IPs.Free; IDStack.Free; end; end; Aber unter Android (und genau da brauche ich das) liefert das nur 127.0.0.1 zurück, egal ob ich im WLAN oder im mobilen Netz verbunden bin! Bitte helft mir ! Ciao Stefan |
AW: Mailabruf mit IPv6 geht nicht
Ich habe mir eine Funktion zum Auslesen der IP gemacht, in der Hoffnung, damit die richtige Einstellung für den IdSSLIOHandlerSocketOpenSSL zu finden:
Delphi-Quellcode:
Unter Windows bekomme ich die richtige, von der Fritzbox zugewiesene Adresse :-)
procedure TForm3.Button2Click(Sender: TObject);
var IPs: TStringList; IDStack : TIdStack; begin IPs := TStringList.Create; try IDStack := TIdStack.Create; IDStack.IncUsage; IPs.Assign(TStringlist(GStack.LocalAddresses)); Memo1.lines := IPs; finally IPs.Free; IDStack.Free; end; end; Aber unter Android (und genau da brauche ich das) liefert das nur 127.0.0.1 zurück, egal ob ich im WLAN oder im mobilen Netz verbunden bin! Bitte helft mir ! Ciao Stefan |
AW: Mailabruf mit IPv6 geht nicht
.. ist zwar schon etwas älter aber vielleicht deutet es einen Lösungsweg an:
![]() Grüße Klaus |
AW: Mailabruf mit IPv6 geht nicht
|
AW: Mailabruf mit IPv6 geht nicht
Das Fix ist beschrieben als "Substitute for TIdStackVCLPosix.GetLocalAddressList", aber was hat VCL mit Android zu tun?
Ciao Stefan |
AW: Mailabruf mit IPv6 geht nicht
.. ist vielleicht für beide Systeme VCL und Posix - Posix klingt nach Linux.
Grüße Klaus |
AW: Mailabruf mit IPv6 geht nicht
Ich habe im Netz eine weitere Variante gefunden, welche die IP auslesen können soll, nur meckert der Compiler bei
Delphi-Quellcode:
"Ungültiges Zeichen in Eingabedatei '%'
Result := '255.255.255.' + (%11111111 shr NCode).ToString
Ich sehe da aber keinen Fehler! Ciao Stefan |
AW: Mailabruf mit IPv6 geht nicht
vielleicht so?
Delphi-Quellcode:
Was ist denn NCode?
Result := '255.255.255.' + ($FF shr NCode).ToString
Grüße Klaus |
AW: Mailabruf mit IPv6 geht nicht
Danke, funktioniert!
Hier der komplette Teilcode:
Delphi-Quellcode:
Ciao
{ Dumb conversion of number of bits to 4-byte SubnetMask string}
function SubnetMask(ACode: string): string; begin var NCode := ACode.ToInteger; if NCode < 25 then // Result := '255.255.255.' + (%11111111 shr NCode).ToString Result := '255.255.255.' + (255 shr NCode).ToString else if NCode < 33 then // Result := '255.255.' + (%11111111 shr NCode-24).ToString + '.0' Result := '255.255.' + (255 shr NCode-24).ToString + '.0' else if NCode < 41 then // Result := '255.' + (%11111111 shr NCode-32).ToString + '.0.0' Result := '255.' + (255 shr NCode-32).ToString + '.0.0' else if NCode < 49 then // Result := (%11111111 shr NCode-40).ToString + '.0.0.0' Result := (255 shr NCode-40).ToString + '.0.0.0' else Result := '0.0.0.0.'; end; Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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