È malformato. You're not permitted to have whitespace characters in the middle of an RFC 2047 encoded-word, e quindi JavaMail smette di provare a decodificare l'oggetto quando colpisce uno spazio prima che colpisca il terminale ?=
. La maggior parte dei parser sarà flessibile su cose come questa, dato che così tanti messaggi sono malformati in questo modo, ma JavaMail è un po 'troppo severo in questo senso. Non è sbagliato, ma non è sicuramente "essere liberale in ciò che accetta". Questo è ciò che il RFC ha da fare:
importante: 'di codificati-parola sono progettati per essere riconosciuto come' atomo di da un RFC 822 parser. Di conseguenza, lo spazio bianco non codificato caratteri (come SPACE e HTAB) è VIETATO in una "parola codificata" . Ad esempio, la sequenza di caratteri
=?iso-8859-1?q?this is some text?=
sarebbe interpretata come quattro 'atomo di, piuttosto che come un singolo 'atomo'(di un RFC 822 parser) o 'codificati-parola'(da un parser che comprende 'codificati-parole'). Il modo corretto di codificare la stringa "questo è un po 'di testo " è di codificare anche i caratteri SPACE, ad es.
=?iso-8859-1?q?this=20is=20some=20text?=
si potrebbe sostituire tutti gli spazi in là con il carattere di sottolineatura, ma che può ottenere disordinato perché si sarebbe in sostanza deve scrivere il proprio parser in modo da sapere quando farlo.
Si potrebbe anche provare a impostare la proprietà di sistema mail.mime.decodetext.strict
su false
, ma un aspetto superficiale del codice JavaMail non sembra essere di aiuto. (Eppure vale la pena provare, però.)
@Cancer Lee: scrive "Ho provato il suggerimento, funziona". Quindi prova "mail.mime.decodetext.strict". – dkarp