webtier@glassfish.java.net

Re: JavaMail 1.4.4/demo/msgshow.java

From: <forums_at_java.net>
Date: Mon, 19 Sep 2011 08:09:57 -0500 (CDT)

Hi,

Yes, it is absolutely resolved.

This is the code to get the attached files,

Object content = p.getContent();
           
      if (content instanceof Multipart) {
             Multipart mp = (Multipart) content;
            
             for (int j = 0; j < mp.getCount(); j++) {
              Part part = mp.getBodyPart(j);
              String disposition = part.getDisposition();
                            if ((disposition !=
null) && (disposition.equalsIgnoreCase(Part.ATTACHMENT) ||
disposition.equalsIgnoreCase(Part.INLINE))) {
               // Check if plain
               MimeBodyPart mbp = (MimeBodyPart) part;
              
               if (!mbp.isMimeType("text/plain")) {
              
                DataFile df = new DataFile();
                df.setContentType(mbp.getContentType());
               
                String filename =
decodeName(part.getFileName());
                if (filename == "unknown"){
                    filename = "Attachment" + attnum;
                    filename = setFileExtension(mbp,
filename);
                }
                df.setFileName(filename);
                String downloadDir =
getServletConfig().getServletContext().getRealPath(null);
                //File savedir = new File(downloadDir);
                //savedir.mkdirs();
                File savefile = new File(downloadDir,
filename);
                df.setFile(savefile);
                saveFile(savefile, part);
               
                dfList.add(df);
               }
              
              }
             
             } // end of multipart for loop
            
            }

being decodeName(part.getFileName()) as follows,

private String decodeName( String name ) throws Exception {
        if(name == null || name.length() == 0){
                return "unknown";
        }
        String ret = java.net.URLDecoder.decode( name, "UTF-8" );
        // also check for a few other things in the string:
        ret = ret.replaceAll("=\\?utf-8\\?q\\?", "");
        ret = ret.replaceAll("\\?=", "");
        ret = ret.replaceAll("=20", " ");
        return ret;
}

For a complete version of the code see the attachment file.

Regards,

Jose


--
[Message sent by forum member 'josealvarezdelara']
View Post: http://forums.java.net/node/843703