Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
CORBA/Java Notesmail gesendet - Anzeigeproblem Attachmentname (Umlaute)
magic_halli:
Hallo,
ich arbeite am erstellen/senden einer Mail via Corba an den Domino. Fast alles klappt nun perfekt, bis auf die Darstellung des Attachmentname in der Mail im Notes-Posteingang bzw. Gesendet-Ordner.
Probleme machen nur Attachmentnamen mit Umlauten - ä, ö, ü und ß!
Hier mal der betreffende Code, wo ich Attachments hinzufüge und anschließend das Maildokument sende:
('email' im Code ist hierbei ein eMail-Object, welches alle nötigen eMail-Daten bereitstellt. Diese werden einfach nur noch ausgelesen und gesetzt)
--- Code: ---Document memo = db.createDocument();
memo.replaceItemValue("Form", "Memo");
MIMEEntity mime = memo.createMIMEEntity();
...
// Anlagen anhängen --> 2..n.Child
if (email.getAttachments().size() > 0) {
for (int i = 0; i < email.getAttachments().size(); i++) {
Stream attach = s.createStream();
MIMEEntity child = mime.createChildEntity();
byte[] bytes = email.getAttachments().get(i).getBinary();
String filename = email.getAttachments().get(i).getFilename();
String contentType = email.getAttachments().get(i).getContentType();
attach.write(bytes);
if (attach.getBytes() != 0) {
child.setContentFromBytes(attach, contentType + "; name=\"" + filename + "\"",
MIMEEntity.ENC_IDENTITY_BINARY);
}
else {
System.out.println("FileStream has no content");
}
attach.close();
}
}
memo.setSaveMessageOnSend(true);
// Mail senden an RECIPIENT oder MULTIPLE RECIPIENTS
// multi ist hierbei ein Vector<String>
memo.send(false, multi);
--- Ende Code ---
Beim senden einer Test-Datei, wo der 'filename' "Liqiditötästüestß eins.xls" lautet, wird diese Datei korrekt in der Mail im Notes-Posteingang eingebunden - lässt sich auch korrekt öffnen - nur der Anzeigename und somit auch Dateiname lautet hier nun "Liqidit”t„stestá eins.xls" !!! :-:
Im Header wiederrum ist der Dateiname korrekt mit allen Umlauten gesetzt.
Wie kann ich diesem Problem auf die Schliche kommen?
Wo könnte ich ansetzen - ist hierzu bereits irgendwas bekannt?
Danke und Gruß
Rico.
EDIT: Der Header zum Attachment beginnt so:
--- Code: ---Content-Type: application/vnd.ms-excel; name="Liqiditötästüestß eins.xls"
Content-Transfer-Encoding: base64
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA
EAAAQwAAAAEAAAD+////AAAAAAAAAAD/////////////////////////////////////////////
...
--- Ende Code ---
m3:
Junger Mann, tun Sie den Filenamen RFC-konform gemäß der "MIME encoded-word syntax" encoden, dann klappts auch mit der Anzeige. ;)
Siehe: NotesMimeEntity Umlaute im Header
P.S.: Wenn Du Dich schon so oft mit dem Thema Mail herumschlägst, wäre es nicht schlecht, wenn Du Dir mal die entsprechenden RFC reinziehen würdest (2821, 2822 sowie die dazugehörigen MIME-RFCs). Das hilft enorm.
flaite:
RFC sind keine NaturGesetze, sondern der kleinste gemeinsame Nenner.
Sie entstehen in kuriosen Meetings von nach fragwürdigen Gesichtspunkten zusammengestellten Personen.
Und zwar in einer anderen Zeit.
Grundsätzlich sollten moderne Mailsysteme mit solchen Encoding-Problemen umgehen können.
In der Projektrealität liefert aber so ein RFC so etwas wie eine Rückfallposition.
jakarta.commons.Fileuploader kennt im Interface org.apache.commons.fileupload.FileItem.getValue(String encoding). In den implementierenden Klassen ist das encoding, mit dem der Wert des Feldes ausgelesen werden soll, parametrisierbar.
Vielleicht schaust du dir mal den entsprechenden Source code an.
flaite:
--- Zitat ---Vielleicht schaust du dir mal den entsprechenden Source code an.
--- Ende Zitat ---
hab schon.
Bin mir nicht sicher. Aber:
--- Code: ---
child.setContentFromBytes(attach, contentType + "; name=\"" + new String(filename, <dasVerwendeteEncoding>) + "\"",
MIMEEntity.ENC_IDENTITY_BINARY);
--- Ende Code ---
<dasVerwendeteEncoding> könnte sein: "ISO-8859-1"
m3:
Pitiyankee, klar sind RFC nicht der Weisheit letzter Schluss, aber wenn man Code schreibt, der Mails erzeugt, sollte man entweder die RFCs lesen, verstehen und umsetzten, oder entsprechende fertige Klassen benutzen, die das für einen Übernehmen.
Und herumgeraten bzw. in irgendwelchen Sourcecodes braucht man hier nicht herumstöbern, sondern muss nur RFC2822 lesen. Dort steht nämlich, dass alle Werte, die nicht aus ASCII-Werten bestehene, gemäß der MIME encoded-word Syntax (RFC 2047) kodiert werden müssen (Kapitel 3.2.5. Quoted strings).
Wenn man eine E-Mail so erzeugt, sollten jedes moderne Mailingsystem problemlos damit umgehen können. Das hat nix mit Encodings, et al zu tun.
So wärs richtig:
--- Code: ---Content-Type: application/vnd.ms-excel; name="Liqidit=F6t=E4st=FCest=DF eins.xls"
Content-Transfer-Encoding: base64
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln