文档中心有文章.自己去看 ------------------------------------------------------
           我们还年轻牛奶会有的奶牛也会有的 
             可天天在 csdn 混这些会有吗 ??

解决方案 »

  1.   

    我要哭了.
    找遍了文章中心的所有关于JavaMail的文章.都没有说到这方面的内内容.
    哪位大虾能在此指点一下了!
    万分感激!
      

  2.   

    问题解决了.看了蔡学镛先生的一片文章<<Java 繁体中文处理完全攻略>>,从其中的一段话得到启示.
    "InputStream/OutputStream 会原封不动地传送资料,但是 Reader/Writer 会将资料当作文字对待,所以 Reader/Writer 在「必要时」会把(文字)资料转码。"
    问题的原因就是Reader/Writer对资料进行了转码.修改后的代码如下:
    //////处理附件//////
    String[] fileName=null;
    InputStream[] inputStream=null;
    Object o=themessage[number].getContent();//当Message对象含有附件时,其内容会以Multipart的形式存在
    if(o instanceof String)
    {
      //不含附件
    }
    else if(o instanceof Multipart)
    {
      //可能含有附件
      //以Multipart的getBodyPart方法取得内容部分,并以getDisposition方法取得邮件的配置
      Multipart mp =(Multipart)o;
      fileName=new String[mp.getCount()];
      inputStream=new InputStream[mp.getCount()];
      for(int i=0,n=mp.getCount();i<n;i++)
      {
        Part part=mp.getBodyPart(i);
        if(i==0)
        {Content=part.getContent().toString();}
        String disposition =part.getDisposition();
        //判断Multipart中是否含有附件的方法.则是依据getDisposition所返回的内容
        if((disposition !=null)&&(disposition.equals(Part.ATTACHMENT)||disposition.equals(Part.INLINE)))
        {
           fileName[i]=part.getFileName();
           System.out.println(fileName[i]);
           fileName[i]=fileName[i].valueOf(i)+fileName[i].substring(fileName[i].indexOf("."),fileName[i].length());
           System.out.println(fileName[i]);
           inputStream[i]=part.getInputStream();
           System.out.println(inputStream[i].toString());
           String pathName="D:\\Online\\defaultroot\\mail\\附件\\";
           File file=new File(pathName + fileName[i]);
           FileOutputStream outfile=new FileOutputStream(file);
           BufferedInputStream br=new BufferedInputStream(inputStream[i]);
           BufferedOutputStream bw=new BufferedOutputStream(outfile);
      
           int b;
           while((b=br.read())!=-1)
           {
        bw.write(b);
           }
           bw.flush();
           outfile.close();
        }
      }
    }