91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

婺源县| 丹凤县| 贵溪市| 深泽县| 贵港市| 额敏县| 屯留县| 寻甸| 尖扎县| 佛坪县| 旺苍县| 西峡县| 台南市| 五指山市| 曲水县| 当涂县| 长白| 邵武市| 通江县| 赣榆县| 资源县| 安达市| 荣成市| 铜梁县| 广元市| 浦县| 恩平市| 台山市| 德阳市| 镇雄县| 汝阳县| 樟树市| 桦川县| 兴海县| 武平县| 安达市| 儋州市| 即墨市| 阳信县| 方山县| 如东县|