# Problem mit JavaMail und Attachments



## mk666 (30. Oktober 2008)

Hallo Leute!

Wie der Titel schon andeutet habe ich ein kleines Problem mit JavaMail und Attachments. 

Kurze Erklärung zum Problem.

Ich bekomme von einem Kunden Mails mit einem PDF im Anhang (zusätzlich werden von deren Mailserver auch noch ein JPG und ein weiteres PDF angehangen, die mich aber nicht weiter interessieren). Aus der Mail extrahiere ich Subjekt, Textpart und das PDF und verarbeite das Ergebnis weiter.
Bis gestern hat das auch immer gut funktioniert. Im Juli habe ich von dem Kunden ca. 1.000 Mails bekommen die problemlos verarbeitet werden konnten. 
Jetzt sollen weitere ca. 1.000 Mails auf die gleiche Weise kommen, aber leider wird das Attachment nicht mehr korrekt extrahiert. Statt "dateiname.pdf" findet sich anschließend eine Datei mit folgendem Namen "UTF-8BWUxBUzAwMDMuUERG". Gebe ich der die Endung .pdf, läßt die sich problemlos als PDF öffnen.

Wenn ich mir die E-Mail im Quelltext anschaue findet sich dort folgendes:


```
Content-type: application/octet-stream; 
	name="=?UTF-8?B?WUxBUzAwMDMuUERG?="
Content-Disposition: attachment; filename="=?UTF-8?B?WUxBUzAwMDMuUERG?="
Content-transfer-encoding: base64
```

Bei den Mails aus dem Juli sah der Teil noch folgendermaßen aus:


```
Content-Type: application/pdf;
	name="xxxxxxxx.PDF"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="xxxxxxxx.PDF"
```

Wenn ich die Mails z.B. mit Outlook abrufe, dann wird das PDF im Anhang auch korrekt angezeigt, im Quelltext steht allerdings auch obiges. Outlook scheint daraus aber den korrekten Dateinamen konstruieren zu können.
Für mich sieht das ganze irgendwie nach einem Kodierungsproblem aus. Aber ich habe keinen Schimmer wie ich das lösen kann. Habe mich schon tot gegoogelt, aber tue mich auch etwas schwer das Problem in kurzen Worten zu definieren. 

Hat jemand eine Idee oder Lösung parat? Wie immer muß das eigentlich schon gestern gelöst sein, aber ich stehe total auf dem Schlauch.

Danke
mk


----------



## Billie (31. Oktober 2008)

Liegt das Problem dann nicht offensichtlich beim Kunden selbst oder woher auch immer diese eMails kommen?


----------



## mk666 (31. Oktober 2008)

Für alle die es interessiert, ich habe eine Lösung gefunden, nachdem ich mich nochmal durch die JavaMail-Doku gequält habe. Muß ich gestern überlesen haben. Die Lösung ist natürlich mal wieder total einfach.

Standardmäßig schert sich JavaMail nicht um das Encoding/Decoding von Dateinamen. Entweder man macht das selber manuell mittels der Klasse MimeUtility


```
MimeUtility.decodeText(filename)
```

oder man setzt folgende System-Properties auf true



> "mail.mime.encodefilename"
> "mail.mime.decodefilename"



@Billie: Jain, würde ich mal sagen. Ich kann ja unseren Kunden ja nicht vorschreiben mit welchen Encoding die ihre Mails verschicken.


----------

