Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Kressner am 24.09.10 - 14:45:23

Titel: mime Umlaute
Beitrag von: Kressner am 24.09.10 - 14:45:23
Ich möchte eine mime Mail erstellen, das klappt sehr gut. Jedoch kommen die Umlaute im Betreff nicht an. Im Body klappt es, da habe ich es ja definiert (iso-8859-1).
Im Betrefff kann ich es nicht definieren, zumindest weiss ich nicht wie.
Bsp:
   s.ConvertMIME = False
   Set doc = db.CreateDocument   

   Set body = doc.CreateMIMEEntity
   Set header = body.CreateHeader("Content-Type")
   Set header = body.CreateHeader("Subject")
   Call header.SetHeaderVal("üöä ÜÖÄ Test ") ' diese Umlaute werden nicht angezeigt
   Set header = body.CreateHeader("To")
   Call header.SetHeaderVal("test@test.de")
   Set stream = s.CreateStream
   Call stream.WriteText("<HTML><Body><B>öüäÖÜÄ  Text in bold</B>text normal</body></html>") ' diese Umlaute gehen
   Call body.SetContentFromText (stream, "text/html;charset=iso-8859-1",ENC_NONE)
   Call doc.Send(False)
   s.ConvertMIME = True


Danke
Titel: Re: mime Umlaute
Beitrag von: m3 am 24.09.10 - 15:18:51
1) Wenn schon iso-8859 im Body, dann iso-8859-15 (Euro-Zeichen, ..). Besser wäre UTF-8.

2) Native UTF-8 Header-Values (und Notes schreibt AFAIK per default UTF-8) sind nur erlaubt, wenn der empfangende SMTP-Server mitteilt, dass er die SMTP-Erweiterung "UTF8SMTP" unterstützt (siehe RFC 5335, Kapitel 4.2 (http://tools.ietf.org/html/rfc5335#section-4.2))

3) Für den Betreff/Subject gilt seit der RFC 2822 (http://tools.ietf.org/html/rfc2822), dass hier nur ASCII-Zeichen verwendet werden dürfen. Wenn Du einen Betreff mit Umlauten schicken willst, musst Du sie "word encoden". Z.B. so:
Code
=?iso-8859-15?Q?=A1Hola,_se=F1or!?=
Siehe Wikipedia (http://en.wikipedia.org/wiki/MIME#Encoded-Word) und RFC 2047 (http://tools.ietf.org/html/rfc2047)
Titel: Re: mime Umlaute
Beitrag von: Kressner am 27.09.10 - 10:01:35
mit Punkt 1 und 2 bin ich einverstanden.
Punkt 3 verstehe ich nicht ganz.
Ich kann sozusagen für einen Absatz oder einzelne Wörter einen Code festlegen.
Wo kann ich dazu die Syntax nachlesen z.B. "=?iso-8859-15?........umlaute etc.....?="
Ich finde viel zu php und mime aber das kann ich nicht ins Notes transportieren.
Muss ich folgendes im Notes schreiben:
Call header.SetHeaderVal("=?iso-8859-15?Q?=A1Hola,_se=F1or!?=")

Danke
Titel: Re: mime Umlaute
Beitrag von: heini_schwammerl am 27.09.10 - 13:19:20
Du solltest unter dem Stichwort quoted printable eine Menge finden, nicht nur für PHP.
Und ja im Prinzip musst Du das Subject Feld umschreiben.
So kommt von der IBM der wöchentliche Newsletter an.
Der Servertask formatiert die Meldung also auch entsprechend um.
Code
=?iso-8859-1?Q?W=F6chentliche_Information_f=FCr_Business_Partner?=
Mit Lotusscript gibt es die entsprechenden Klassen. Ich bin faul und wandle Umlaute soweit möglich in oe, ae etc.
HTML Encoding geht leider auch nicht, also z.B. &szlig; für ein "ß"
Evtl. kann man unter Lotusscript einen Stream erzeugen und den dann encoden und mit readText() wieder auslesen.
Anfang (?iso-8859-1?Q?) und Ende (=) würde ich dabei nicht codieren. Ausprobiert habe ich das aber noch nicht und es gibt daher vielleicht auch eine ganz einfache Lösung.
Gruß
Henning
Titel: Re: mime Umlaute
Beitrag von: m3 am 27.09.10 - 13:35:08
Wozu gebe ich eigentlich Links bei meinen Postings an? Steht doch alles in der RFC bzw. für jene, die es etwas "hübscher" aufbereitet wollen, auf der Wikipediaseite.

Und Quoted-Printable bzw. base64 in Lotusscript zu implementieren ist wohl eher eine Fingerübung bzw. eine Google-Suche.