当前位置: 技术问答>java相关
用javamail发送附件名为中文名时的一个问题,送分45!!!!
来源: 互联网 发布时间:2015-10-09
本文导语: 文件可以正确发出去,但文件名为中文名时,发送出去以后,在其他信箱里就是乱码,请问如何解决?我觉得里面有一句代码有问题: MimeBodyPart mbp2=new MimeBodyPart(); attachment="d:网络地址.txt"; mbp2.setFileName(attachment);如...
文件可以正确发出去,但文件名为中文名时,发送出去以后,在其他信箱里就是乱码,请问如何解决?我觉得里面有一句代码有问题:
MimeBodyPart mbp2=new MimeBodyPart();
attachment="d:网络地址.txt";
mbp2.setFileName(attachment);如果是这样就不能在信箱里正确显示!
MimeBodyPart mbp2=new MimeBodyPart();
attachment="d:网络地址.txt";
mbp2.setFileName(attachment);如果是这样就不能在信箱里正确显示!
|
如下方法处理中文附件名:
javamail附件中文乱码:
/*
@从BodyPart中提取使用ISO-8859-1编吗的文件名
@因为BodyPart.getFilename()过程已经对文件名作了一次编码,有时不能直接使用
*/
public static String getISOFileName(Part body){
//设置一个标志,判断文件名从Content-Disposition中获取还是从Content-Type中获取
boolean flag=true;
if(body==null){
return null;
}
String[] cdis;
try{
cdis=body.getHeader("Content-Disposition");
}
catch(Exception e){
return null;
}
if(cdis==null){
flag=false;
}
if(!flag){
try{
cdis=body.getHeader("Content-Type");
}
catch(Exception e){
return null;
}
}
if(cdis==null){
return null;
}
if(cdis[0]==null){
return null;
}
//从Content-Disposition中获取文件名
if(flag){
int pos=cdis[0].indexOf("filename=");
if(pos
javamail附件中文乱码:
/*
@从BodyPart中提取使用ISO-8859-1编吗的文件名
@因为BodyPart.getFilename()过程已经对文件名作了一次编码,有时不能直接使用
*/
public static String getISOFileName(Part body){
//设置一个标志,判断文件名从Content-Disposition中获取还是从Content-Type中获取
boolean flag=true;
if(body==null){
return null;
}
String[] cdis;
try{
cdis=body.getHeader("Content-Disposition");
}
catch(Exception e){
return null;
}
if(cdis==null){
flag=false;
}
if(!flag){
try{
cdis=body.getHeader("Content-Type");
}
catch(Exception e){
return null;
}
}
if(cdis==null){
return null;
}
if(cdis[0]==null){
return null;
}
//从Content-Disposition中获取文件名
if(flag){
int pos=cdis[0].indexOf("filename=");
if(pos