解码UTF-8电子邮件主题?

我有一个这种forms的字符串: =?utf-8?B?zr...

我想以正确的UTF-8编码获取文件的名称。 在maven中心某处有一个库方法可以为我做这个解码,还是我需要手动测试模式和解码base64?

在MIME术语中,那些编码的块称为编码字。 查看JavaMail中的javax.mail.internet.MimeUtility.decodeTextdecodeText方法将解码字符串中的所有编码字。

你可以从maven手拿它

  javax.mail mail 1.4.4 

MimeUtility.decodeText正在为我工​​作,

例如,

 MimeUtility.decodeText("=?UTF-8?B?4K6q4K+N4K6q4K+K4K604K6/4K614K+BIQ==?="); 
 javax.mail.internet.MimeUtility.decodeWord() 

另一方面,如果您使用JavaMail来解码您的电子邮件,则您根本不需要关心主题解析或MIME主体(附件)解析。

顺便说一句,它不需要是Base64(与Apple的客户端相同),它也可以是Quoted-Printable(与MS Outlook客户端一样)。

Thunderbird使用较短的格式(日语为Base64,大多数欧洲语言为QP)。

如果你真的想自己实现它,那么看一下RFC2047和RFC2184 (你必须看看,有两个细微之处,比如在两个不同的字符集中分割编码或者合并相邻的编码字只能通过折叠空格分隔)