Seite 1 von 3
Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 12.05.2016 15:17
von dige
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
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 12.05.2016 15:29
von NicTheQuick
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)
Verfasst: 12.05.2016 15:37
von dige
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
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
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 12.05.2016 15:43
von CodeBurg
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.
Bei mir funktioniert es. Das denke ich zumindest, da ich ein Ergebnis erhalte, das ich allerdings Mangels Kenntnis der IDNA-Kodierung nicht verifizieren kann.
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.
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 12.05.2016 16:23
von NicTheQuick
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)
Verfasst: 13.05.2016 17:52
von edel
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
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 13.05.2016 17:56
von NicTheQuick
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 13.05.2016 18:44
von JMaker
@Nic: Dann fang an

Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 13.05.2016 18:58
von NicknameFJ
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.
@NicTheQuick:
Ich glaube es liegt daran dass Du ein Leerzeichen mit im Text hast
U+00000020 als Hex Wert für 32 = das Leerzeichen
NicknameFJ
Re: Umlaute in E-Mail Adressen kodieren (IDNA)
Verfasst: 17.05.2016 08:07
von dige
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
Yeah!!!

Funktioniert! Danke Edel!!!