Hi,
ich extrahiere aus einer MIME-Mail die Anhänge (sind vom ContentTyp 'application'). Das klappt soweit auch prima.
Der Dateiname des "MIME-Anhangs" steht ja im Header drin.
Um an den Dateinamen des Anhangs zu kommen, lese ich den Header aus und hole mir den ParamValue 'name':
...
Dim child As NotesMIMEEntity
Dim header As NotesMimeHeader
Dim filename As String
...
Set header = mime.GetNthHeader("Content-Type")
filename = header.GetParamVal("name")
Klappte bisher immer, d.h. es stand bisher immer ein korrekter Dateiname drin, bspw. "Test.xls" etc.
Jetzt ist ein Fall aufgetreten, wo eine Datei "Liquidität.xls" dranhängt. Jetzt ist der Wert vom MIMEEntity im ParamVal 'name' bzw. in filename:
=?iso-8859-1?Q?Liquidit=E4t.xls?=
Somit kann diese Datei erstmal nicht extrahiert werden!!!
Woran liegt das, dass der Dateiname so im Header steht? (Umlaut?)
Das wäre doch dann ein Problem von Notes beim Mailempfang, oder?
Wie bekomme ich wieder einen normalen Dateinamen?
Danke und Gruß
Rico.
Mag sein, dass das absolut Standardkonform ist und auch von Notes verstanden wird. Daran zweifel ich auch nicht.
Aber, wie schon gesagt, mein Problem ist der Header vom Attachment:
Content-Type: application/vnd.ms-excel;
name="=?iso-8859-1?Q?Liquidit=E4t.xls?="
Content-Disposition: attachment;
filename="=?iso-8859-1?Q?Liquidit=E4t.xls?="
Content-Transfer-Encoding: base64
Ganz ehrlich, mich hat der Link nicht sonderlich weitergebracht für mein filename-Problem.
Ich will ja "nur" den 'filename' in lesbarer Formatierung auslesen. Ich hab leider keine Idee, wo ich wie ansetzen soll, wenn dieser wie hier aussieht. :-[
Eigentlich sollten doch die Umlaute vom Anhang-Name in 'filename' auch als Umlaute drin stehen? Ist das vielleicht eine Einstellungssache von Notes in Hinsicht auf eine eingehende Mail, sodass man solche Formatierungen bereits serverseitig handeln kann?
Rico.
Hab mein Problem behoben. Evtl. RFC-2047 codierte Header werden decodiert und einfach neu gesetzt. Bei Nicht-RFC-2047 Headern bleibt der 'name' dann sowieso gleich.
...
Dim child As NotesMIMEEntity
Dim header As NotesMimeHeader
Dim filename As String
Set header = child.GetNthHeader("Content-Type")
header.SetHeaderValAndParams(header.GetHeaderValAndParams(False,True))
filename = header.GetParamVal("name")
Das Dokument wird ja eh nicht gespeichert, von daher kann ich den Header für meinen Zwecks ruhig neu setzen?!
Klappt! Ob es hierfür noch eine weiter Lösung gibt... keine Ahnung.
Rico.