javamMail 实现的方式请见:http://blog.youkuaiyun.com/linlinv3/article/details/9251119
这里主要是为大家讲解的标题或者附件名称过长出现乱码的解决方法:
在发送邮件的时候 如果标题过长,则会出现乱码
解决方法是
将传入的标题分段进行转码
例如
传入的String zt(很长很长的一个String)
这时候 可以吧这个字符串进行截取
if(zt.length()>12){
for(int i = 0 ; i<=Math.floor(zt.length()/12) ; i++){
String s="";
String utfS = "";
int j = (int) Math.floor( zt.length()/12);
if(i==0){
s = zt.substring(0, 12);
utfS = new String(base64.encode(s.getBytes("UTF-8")));
}else{
if(i==j){
s = zt.substring(12*i, zt.length());
}else{
s = zt.substring(12*i, 12*i+12);
}
utfS = new String(base64.encode(s.getBytes("UTF-8")));
}
sList.add(s);
ztList.add(utfS);
}
}
StringBuffer st = new StringBuffer("=?UTF-8?B?");
for(int i = 0;i<ztList.size();i++){
st.append(ztList.get(i).toString()) ;
}
st.append("?=");
message.setSubject(st.toString());
把list里面的数据一个一个的循环放进去,最后放入标题,这样再长的题目也不会出现乱码了。
有其他问题的欢迎补充讨论。