首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring发送电子邮件发件人中文名乱码有关问题解决办法

2012-08-31 
Spring发送电子邮件发件人中文名乱码问题解决方法网站重构,一部分用户动作需要发送邮件通知给相关人员,但

Spring发送电子邮件发件人中文名乱码问题解决方法

网站重构,一部分用户动作需要发送邮件通知给相关人员,但是通过spring发送的邮件在信箱里接收后会显示乱码,google了一下找了解决方法,记录一下。

?

发件人参数

mail.from=OECP社区 <webmaster@po-soft.com>

?

?

原本使用

helper.setFrom(from.getBytes("GBK"),"ISO-8859-1");

?邮箱里打开邮件后,发件人显示显示乱码

?

Spring发送电子邮件发件人中文名乱码有关问题解决办法

?

?

修改后

helper.setFrom(javax.mail.internet.MimeUtility.encodeText(from , "utf-8","B"))

?收件人显示正常,但是发件人内包含回复地址。

Spring发送电子邮件发件人中文名乱码有关问题解决办法

?

继续修改

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;}

?邮件发件人显示正常了

Spring发送电子邮件发件人中文名乱码有关问题解决办法

?

热点排行