郁闷啦,做个邮件客户端不是这报错就是那报错,我在火弧下发送邮件,附件名正常,但当我到了IE下时,附件名就变成了路径名+附件名了,我用转义字符也不行,大侠们有没有什么简单快捷的方法啊?在线等待
贴一下我保存附件的代码:
public void saveAttachMent(Part part) throws Exception {
String fileName = "";
if (part.isMimeType("multipart/*")) {
Multipart mp = (Multipart) part.getContent();
for (int i = 0; i < mp.getCount(); i++) {
BodyPart mpart = mp.getBodyPart(i);
String disposition = mpart.getDisposition();
if ((disposition != null)
&& ((disposition.equals(Part.ATTACHMENT)) || (disposition
.equals(Part.INLINE)))) {
fileName = mpart.getFileName();
if (fileName.toLowerCase().indexOf("utf-8") != -1) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
}
if (fileName.toLowerCase().indexOf("gb2312") != -1) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
}
System.out.println(fileName);
saveFile(fileName, mpart.getInputStream());
} else if (mpart.isMimeType("multipart/*")) {
saveAttachMent(mpart);
} else {
fileName = mpart.getFileName();
if ((fileName != null)&& (fileName.toLowerCase().indexOf("utf-8") != -1)) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
saveFile(fileName, mpart.getInputStream());
} else if((fileName != null)&& (fileName.toLowerCase().indexOf("gb2312") != -1)) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
saveFile(fileName, mpart.getInputStream());
}
}
}
} else if (part.isMimeType("message/rfc822")) {
saveAttachMent((Part) part.getContent());
}
}
贴一下我保存附件的代码:
public void saveAttachMent(Part part) throws Exception {
String fileName = "";
if (part.isMimeType("multipart/*")) {
Multipart mp = (Multipart) part.getContent();
for (int i = 0; i < mp.getCount(); i++) {
BodyPart mpart = mp.getBodyPart(i);
String disposition = mpart.getDisposition();
if ((disposition != null)
&& ((disposition.equals(Part.ATTACHMENT)) || (disposition
.equals(Part.INLINE)))) {
fileName = mpart.getFileName();
if (fileName.toLowerCase().indexOf("utf-8") != -1) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
}
if (fileName.toLowerCase().indexOf("gb2312") != -1) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
}
System.out.println(fileName);
saveFile(fileName, mpart.getInputStream());
} else if (mpart.isMimeType("multipart/*")) {
saveAttachMent(mpart);
} else {
fileName = mpart.getFileName();
if ((fileName != null)&& (fileName.toLowerCase().indexOf("utf-8") != -1)) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
saveFile(fileName, mpart.getInputStream());
} else if((fileName != null)&& (fileName.toLowerCase().indexOf("gb2312") != -1)) {
fileName = MimeUtility.decodeText(fileName);
if(fileName.lastIndexOf("\\")>0){
fileName.replace("\\", "_");
}
saveFile(fileName, mpart.getInputStream());
}
}
}
} else if (part.isMimeType("message/rfc822")) {
saveAttachMent((Part) part.getContent());
}
}
DataSource ds = new FileDataSource(file);
bp2.setDataHandler(new DataHandler(ds));
bp2.setFileName(MimeUtility.encodeWord("文件名.xls"),"gb2312", null));