把你相关的代码贴出来,要不然怎么知道你错在哪?以下是一个样式:
private void getAttachFile(Part messagePart,BufferedOutputStream writeAttachObj) throws IOException, MessagingException { Object content = messagePart.getContent() ; 
try 
 { 
  //这种情况下的邮件都是用multi模式发送的, 
  // 这种模式包括有附件的邮件和用html表示content的邮件 
  if (content instanceof Multipart) 
  {
   Multipart contentTmp = (Multipart) content ;
   //如果是MULTI模式发送的,BodyPart(0).getContent()肯定就是content   
   System.out.println("content==" + contentTmp.getBodyPart(0).getContent()) ;
   //getCount()可以得到content中bodyPart的个数,content就是第一个 
    //bodyPart,其它的附件按照顺序类推。但是有的时候附件就是另外一个邮件, 
    //而这个邮件里边可能有其他的附件。下面代码用循环对嵌套情况进行解析。 
  for (int i = 0 ; i < contentTmp.getCount() ; i++) 
  {
   if (contentTmp.getBodyPart(i).isMimeType("multipart/*")) 
   {
    Multipart multipart = (Multipart) contentTmp.getBodyPart(i).getContent() ; 
    //这个地方增加循环是为了解决嵌套附件的情况。 
   for (int k = 0 ; k < multipart.getCount() ; k++) 
   {
    //content也会存在于INPUTSTREAM中。 
    saveAttacheFile(multipart.getBodyPart(k).getContentType(), multipart.getBodyPart(k).getDisposition(), multipart.getBodyPart(k).getFileName(), multipart.getBodyPart(k).getInputStream(), writeAttachObj);
   }
  }
  else 
  {
   saveAttacheFile(contentTmp.getBodyPart(i).getContentType(), contentTmp.getBodyPart(i).getDisposition(), contentTmp.getBodyPart(i).getFileName(), contentTmp.getBodyPart(i).getInputStream(), writeAttachObj); 
   }
  }
 }
 //这种情况中邮件是纯文本形式,并且没有附件 
 
 else
 {
  writeAttachObj.write(("content = "+content+"\r\n").getBytes()); writeAttachObj.flush();
  }
 }
 catch (Exception ie)
 {
  System.out.println("exception====" + ie.getMessage()) ;
 } 
}

解决方案 »

  1.   

    http://www.javaresearch.org/article/showarticle.jsp?column=2&thread=12137&message=37959&redirect=true&hilite=true&q=%D3%C3JavaMail%D0%B4%B5%C4%D2%BB%B8%F6%B5%E7%D7%D3%D3%CA%BC%FE%B7%A2%CB%CD%B3%CC%D0%F2
      

  2.   

    发送时:
     //设置content里的内容
       MimeBodyPart contentMbp = new MimeBodyPart(); 
       //请指定字符集,否则会是乱码 
       contentMbp.setContent(_mailContent.getContent(), "text/html; charset=GB2312");
      

  3.   

    把 messageBodyPart.setFileName((String)arrayList1.get(i)); 
    改为
    messageBodyPart.setFileName(MimeUtility.encodeWord(fds.getName(), "GBD",null)); 
    就OK了另外,你的信誉值不高,但记得给分哦~)~
      

  4.   

    sorry,上面笔误,应该是 "GBK".
      

  5.   

    這個我已經設置了
    contentMbp.setContent(_mailContent.getContent(), "text/html; charset=Big5");這樣的話contentMbp.setContent(_mailContent.getContent(), "text/html; charset=GB2312");
    亂碼更多了些