亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

丹凤县| 华容县| 清新县| 五常市| 嘉祥县| 景德镇市| 临清市| 焦作市| 苏尼特左旗| 土默特右旗| 巢湖市| 疏附县| 随州市| 沽源县| 华容县| 固原市| 青岛市| 沅江市| 开平市| 从江县| 横峰县| 获嘉县| 鄢陵县| 新津县| 乐山市| 屯昌县| 伊宁市| 南和县| 富蕴县| 荣昌县| 武鸣县| 巴林右旗| 安图县| 海原县| 奇台县| 昭通市| 含山县| 班玛县| 中牟县| 五寨县| 大荔县|