中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Javamail中附件中文名字亂碼怎么解決

發布時間:2022-01-10 09:24:02 來源:億速云 閱讀:479 作者:iii 欄目:編程語言

這篇“Javamail中附件中文名字亂碼怎么解決”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Javamail中附件中文名字亂碼怎么解決”文章吧。

首先判斷郵件體是否有附件:
 object out_content = message[i].getContent();
 if (!(out_content instanceof Multipart)){//不是復合郵件體,既是不帶附件。
  partname = new String[0];
  return partname;
  }
如果是復合郵件體,那么就可以調用如下的方法取得中文文件名:
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<0){ 
  return  null; 
  } 
  //如果文件名帶引號 
  if(cdis[0].charAt(cdis[0].length()-1)=='"'){ 
  return  cdis[0].substring(pos+10,cdis[0].length()-1); 
  } 
  return  cdis[0].substring(pos+9,cdis[0].length()); 
  }else{ 
  int  pos=cdis[0].indexOf("name="); 
  if(pos<0){ 
  return  null; 
  } 
  //如果文件名帶引號 
  if(cdis[0].charAt(cdis[0].length()-1)=='"'){ 
  return  cdis[0].substring(pos+6,cdis[0].length()-1); 
  } 
  return  cdis[0].substring(pos+5,cdis[0].length()); 
  } 
  } 
但是有一種情況下,取得的中文文件名也是亂碼,原因有的郵件服務器在發送郵件時,對附件名進行了特殊的編碼,解決如上問題的方法如下:
首先:
1)用如上的方法取得中文文件名:
String filename= new String(getISOFileName(part).getBytes("ISO-8859-1"),"gb2312");
然后創建文件,如果發生FileNotFoundException異常,說明取得的文件名是經過特殊編碼的--我們取得到的未解碼的,是亂嗎,那么就要用javamail提供的函數decodeText進行解碼。具體方法如下。
try{
  myFileoutputstream= new FileOutputStream(filename);
  }catch(FileNotFoundException fe){
  try{
  if (filepath.exists()){
  filename = new File(filepath,MimeUtility.decodeText(getISOFileName(part)));
 }catch(Exception e){
 System.out.println("getpart(int i)重新生成文件:"+e.toString());
 }
  }catch(Exception e){
 System.out.println("getpart(int i)重新生成文件:"+e.toString());
 }
}

以上就是關于“Javamail中附件中文名字亂碼怎么解決”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉隆县| 茂名市| 连州市| 石城县| 德阳市| 灵宝市| 阜新市| 巴里| 寻乌县| 阿荣旗| 仙游县| 弥勒县| 罗城| 兴化市| 泰安市| 县级市| 屯留县| 新干县| 调兵山市| 铅山县| 平江县| 县级市| 甘肃省| 临高县| 澄迈县| 南昌市| 黑河市| 石渠县| 自治县| 丹阳市| 仁布县| 吉林省| 叙永县| 南涧| 广元市| 保德县| 筠连县| 如东县| 灌阳县| 翼城县| 舒城县|