在使用Javamail接收邮件时,获取到的发件人、收件人可能存在"乱码",例如:
=?gb18030?B?MTA2NzU3NzA1MQ==?= <1017566033111@qq.com>
原因: 其实这个并不是乱码,而是经过 字符编码、传输编码后的用户名,通过下面的方法能获取其对应的用户名:
Message[] messages = folder.getMessages();
Message message = messages[0];//获取第一个信件
Address[] recipients = message.getRecipients(RecipientType.TO);//收件人(不含抄送、盲抄送人员)
InternetAddress sender = (InternetAddress) message.getFrom()[0];
String senderStr = StringUtils.defaultIfEmpty(sender.getPersonal(), StringUtils.EMPTY);//可能信件中没有传递用户名
String userName = MimeUtility.decodeText(senderStr);//(符合RFC2047规范)解密