Umlaute in E-Mail Adressen kodieren (IDNA)
Umlaute in E-Mail Adressen kodieren (IDNA)
Hallo,
habe gerade das Problem eine E-Mail mit Umlauten nicht versenden zu können.
Nach langer Suche habe ich herausgefunden, dass diese IDNA kodiert werden
muss. Stichwort: punycode
Hier mal ein Online Converter: http://idnaconv.net/try-it.html
Hat dazu schon mal jemand was in Purebasic gemacht oder hat einen Tipp für eine Lib?
Ciao dige
habe gerade das Problem eine E-Mail mit Umlauten nicht versenden zu können.
Nach langer Suche habe ich herausgefunden, dass diese IDNA kodiert werden
muss. Stichwort: punycode
Hier mal ein Online Converter: http://idnaconv.net/try-it.html
Hat dazu schon mal jemand was in Purebasic gemacht oder hat einen Tipp für eine Lib?
Ciao dige
"Papa, ich laufe schneller - dann ist es nicht so weit."
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Den Online-Konverter verstehe ich nicht. Wenn ich da einen Umlaut angeben, kommt das hier: "We are sorry, but something went terribly wrong. Error Message: NAMEPREP: Prohibited input U+00000020". Und zwar als einzelner Text ohne Seitenlayout oder sowas.
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Probier mal den hier: https://www.charset.org/punycode.php
Hab jetzt noch eine Dll gefunden, die zwar für mIRC gedacht ist,
der aber auch der Quellcode beiliegt: http://xise.nl/mirc/idna.zip
Kommt aber nix gescheites zurück
Hab jetzt noch eine Dll gefunden, die zwar für mIRC gedacht ist,
der aber auch der Quellcode beiliegt: http://xise.nl/mirc/idna.zip
Kommt aber nix gescheites zurück

Code: Alles auswählen
;==========================================================================
; Generated with PureDLLHelper, Copyright ©2011 by Thomas <ts-soft> Schulz
;==========================================================================
Prototype LoadDll(a)
Prototype decode(a, b, c, d, e, f)
Prototype encode(a, b, c, d, e, f)
Global LoadDll.LoadDll
Global decode.decode
Global encode.encode
Procedure.i idna_LoadDLL()
Protected hDLL.i
hDLL = OpenLibrary(#PB_Any, "idna.dll")
If hDLL <> 0
LoadDll = GetFunction(hDLL, "LoadDll")
decode = GetFunction(hDLL, "decode")
encode = GetFunction(hDLL, "encode")
ProcedureReturn hDLL
EndIf
ProcedureReturn #False
EndProcedure
Define.s dummy.s = "-" + Space(255)
If idna_LoadDLL()
OpenWindow(0, 0, 0, 100, 100, "" )
Debug encode (WindowID(0), 0, @"abc@Übergröße.de", @dummy, 1, 1)
Debug dummy
EndIf
"Papa, ich laufe schneller - dann ist es nicht so weit."
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Bei mir funktioniert es. Das denke ich zumindest, da ich ein Ergebnis erhalte, das ich allerdings Mangels Kenntnis der IDNA-Kodierung nicht verifizieren kann.NicTheQuick hat geschrieben:Den Online-Konverter verstehe ich nicht. Wenn ich da einen Umlaut angeben, kommt das hier: "We are sorry, but something went terribly wrong. Error Message: NAMEPREP: Prohibited input U+00000020". Und zwar als einzelner Text ohne Seitenlayout oder sowas.
Aber die Zeichenfolge "äÄöÖüÜß" ergibt "xn--zcaja6ea0ba" nach IDNA-2008 und "xn--ss-uiaa4ga6ba" nach IDNA-2003.
Und "däsüsöhTäst@try.com" ergibt "xn--dsshtst-5wae1poc@try.com" (diesmal nur nach 2008).
Falls es zur Fehlerfindung beträgt: Windows 7 Pro (natürlich aktueller Patchlevel) mit Chrome 50.0.2661.102m.
@dige:
Sorry für OT, aber bei deinem Problem kann ich nicht helfen.
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Vielleicht solltest du beim Prototype mal die richtigen Typen angeben. Möglicherweise brauchst du auch die Pseudotypen, die automatisch utf8, utf16 oder ascii an die DLL weitergeben.
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Der String wird in den gleichen Puffer geschrieben, alle anderen Parameter werden ignoriert.
Versuch es mal so (unicode):
Versuch es mal so (unicode):
Code: Alles auswählen
If idna_LoadDLL()
OpenWindow(0, 0, 0, 100, 100, "" )
encode(0, 0, @dummy, 0, 0, 0)
Debug dummy
decode(0, 0, @dummy, 0, 0, 0)
Debug dummy
EndIf
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Wer es selbst schreiben will. Im Standard findet man eine Beispiel-Implementierung in C: Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
@Nic: Dann fang an 

Ich benutze Pure Basic 5.30 auf Microsoft Windows 7.
Gruß
JM
Gruß
JM
- NicknameFJ
- Beiträge: 324
- Registriert: 03.06.2007 14:36
- Wohnort: Von der Sonne aus gesehen der dritte Planet
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
@NicTheQuick:NicTheQuick hat geschrieben:Den Online-Konverter verstehe ich nicht. Wenn ich da einen Umlaut angeben, kommt das hier: "We are sorry, but something went terribly wrong. Error Message: NAMEPREP: Prohibited input U+00000020". Und zwar als einzelner Text ohne Seitenlayout oder sowas.
Ich glaube es liegt daran dass Du ein Leerzeichen mit im Text hast
U+00000020 als Hex Wert für 32 = das Leerzeichen
NicknameFJ
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller


Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Yeah!!!edel hat geschrieben:Der String wird in den gleichen Puffer geschrieben, alle anderen Parameter werden ignoriert.
Versuch es mal so (unicode):
Code: Alles auswählen
If idna_LoadDLL() OpenWindow(0, 0, 0, 100, 100, "" ) encode(0, 0, @dummy, 0, 0, 0) Debug dummy decode(0, 0, @dummy, 0, 0, 0) Debug dummy EndIf

"Papa, ich laufe schneller - dann ist es nicht so weit."