2011-09-27 16 views

Odpowiedz

13

W terminologii MIME te zakodowane kawałki są nazywane słowami zakodowanymi. Sprawdź javax.mail.internet.MimeUtility.decodeText w JavaMail. Metoda decodeText dekoduje wszystkie zakodowane słowa w łańcuchu.

Można pobrać go z Maven z

<groupId>javax.mail</groupId> 
<artifactId>mail</artifactId> 
<version>1.4.4</version> 
+0

dodam, że miałem ten problem z nazwą (podobna do odpowiedzi mathi poniżej) w części MIME "Załącznik do zawartości - pozycja; nazwa pliku =" nazwa pliku ma "=? utf-8? B? przedrostek, który jest tym specjalnym zakodowanym słowem. – Drizzt321

3
javax.mail.internet.MimeUtility.decodeWord() 

Z drugiej strony, jeśli użyć JavaMail do dekodowania wiadomości e-mail, nie trzeba się martwić o podlegających parsowania lub MIME ciała (załączniki) analizowania w ogóle.

BTW nie musi być Base64 (wspólny z klientami Apple), może również być Quoted-Printable (wspólne dla klienta MS Outlook).

Thunderbird korzysta z krótszego formatu (Base64 dla języka japońskiego, QP dla większości języków europejskich).

Jeśli naprawdę chcesz zaimplementować to samodzielnie, spójrz na RFC2047 i RFC2184 (musisz, istnieje kilka subtelności takich jak podzielone kodowanie w dwóch różnych zestawach znaków lub scalanie sąsiednich zakodowanych słów, rozdzielone tylko przez złożenie białego spacji)

4

MimeUtility.decodeText pracuje dla mnie,

np

MimeUtility.decodeText("=?UTF-8?B?4K6q4K+N4K6q4K+K4K604K6/4K614K+BIQ==?="); 
Powiązane problemy