Spring发送电子邮件发件人中文名乱码问题解决方法
网站重构,一部分用户动作需要发送邮件通知给相关人员,但是通过spring发送的邮件在信箱里接收后会显示乱码,google了一下找了解决方法,记录一下。
?
发件人参数
mail.from=OECP社区 <webmaster@po-soft.com>
?
?
原本使用
helper.setFrom(from.getBytes("GBK"),"ISO-8859-1");?邮箱里打开邮件后,发件人显示显示乱码
?

?
?
修改后
helper.setFrom(javax.mail.internet.MimeUtility.encodeText(from , "utf-8","B"))
?收件人显示正常,但是发件人内包含回复地址。

?
继续修改
helper.setFrom(getFromInternetAddress(from))
?
public final String regex1 = ".*[<][^>]*[>].*"; //判断是 xxxx <xxx>格式文本public final String regex2 = "<([^>]*)>";//尖括号匹配/** * 获取发件人 * @param from * @return */public InternetAddress getFromInternetAddress(String from) {String personal = null;String address = null;if(from.matches(regex1)){personal = from.replaceAll(regex2, "").trim();Matcher m = Pattern.compile(regex2).matcher(from);if(m.find()){address = m.group(1).trim();}try {return new InternetAddress(address, personal, "gb2312");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}else{try {return new InternetAddress(from);} catch (AddressException e) {e.printStackTrace();}}return null;}?邮件发件人显示正常了

?