java源程序的编码格式对jmail邮件发送结果的影响
2015-02-16 14:47
465 查看
最近的项目需要发送邮件给注册用户,找回密码,把以前写的代码直接拿来使用,一切正常。等了几天,再次测试时,却出现了问题。
问题描述如下:
发件人的名称出现了乱码(邮件的正文内容是正常的)。于是就各种查找原因,各种试验,还是不行
以下是关键的代码截取:
某个方法的内部:截取{
MimeMessage mm = null;
MimeMessageHelper helper = null;
JavaMailSenderImpl smi = new JavaMailSenderImpl();
。。。
smi.setDefaultEncoding("UTF-8");
。。。。省略
mailSender = smi;
mm = mailSender.createMimeMessage();
helper = new MimeMessageHelper(mm, true, "UTF-8");
String from1="中文测试 xxxx@x.com";
//设置发件人的名称
helper.setFrom(getFromInternetAddress(from1));
。。。。。。
}
public InternetAddress getFromInternetAddress(String from) {
String regex1 = ".*[<][^>]*[>].*"; //判斷是xxxx <xxx>格式文本
String regex2 = "<([^>]*)>"; //尖括號匹配/**
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;
}
上面这些代码一直都是运行正常的,今天却怪了。用了2个小时测试,问题一直没有解决。。。。后来再一看,发现保存这些的代码的java源文件的保存格式,不是GBK格式了,变成了utf-8,又查看了以前的自己的其他工程此处代码文件使用的GBK格式保存的。于是把源文件改回GBK格式保存,再次测试,问题解决。
后来回想,这这几年也遇到过一些源程序代码文件保存格式导致程序乱码的问题,所以此处记录下来备忘。
问题描述如下:
发件人的名称出现了乱码(邮件的正文内容是正常的)。于是就各种查找原因,各种试验,还是不行
以下是关键的代码截取:
某个方法的内部:截取{
MimeMessage mm = null;
MimeMessageHelper helper = null;
JavaMailSenderImpl smi = new JavaMailSenderImpl();
。。。
smi.setDefaultEncoding("UTF-8");
。。。。省略
mailSender = smi;
mm = mailSender.createMimeMessage();
helper = new MimeMessageHelper(mm, true, "UTF-8");
String from1="中文测试 xxxx@x.com";
//设置发件人的名称
helper.setFrom(getFromInternetAddress(from1));
。。。。。。
}
public InternetAddress getFromInternetAddress(String from) {
String regex1 = ".*[<][^>]*[>].*"; //判斷是xxxx <xxx>格式文本
String regex2 = "<([^>]*)>"; //尖括號匹配/**
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;
}
上面这些代码一直都是运行正常的,今天却怪了。用了2个小时测试,问题一直没有解决。。。。后来再一看,发现保存这些的代码的java源文件的保存格式,不是GBK格式了,变成了utf-8,又查看了以前的自己的其他工程此处代码文件使用的GBK格式保存的。于是把源文件改回GBK格式保存,再次测试,问题解决。
后来回想,这这几年也遇到过一些源程序代码文件保存格式导致程序乱码的问题,所以此处记录下来备忘。
相关文章推荐
- EBS中使用JAVA方式发送HTML格式邮件
- EBS中使用JAVA方式发送HTML格式邮件
- java smtp.sina.com发送邮件解决及编码修正!
- Java邮件开发(一):使用JMail发送一封简单邮件
- Jmail组件发送utf-8编码的邮件
- Java邮件开发(二):使用JMail发送一封图文并茂且包含附件的邮件(下)
- [Java] JavaMail 发送带图片的 html 格式的邮件
- java 发送html格式邮件 样式混乱解决
- Java邮件开发(二):使用JMail发送一封图文并茂且包含附件的邮件(上)
- 用Java发送HTML格式邮件测试类(支持中文)
- Java邮件开发(一):使用JMail发送一封简单邮件
- EBS中使用JAVA方式发送HTML格式邮件
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- 使用UTF-8编码/JMail组件发送邮件乱码问题
- Java发送HTML格式的邮件
- java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作(键人岐)
- java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作
- 【干货】使用Java发送各种格式的邮件
- 【Java邮件开发】7.邮件的基本格式与编码
- [Java] JavaMail 发送 html 格式、带附件的邮件