2013-02-15 2 views
0

Недавно я столкнулся с проблемой при загрузке CSV из моей электронной почты через oracle-javamail. Я обнаружил, что первый работает отлично (идет с сервера мейнфреймов), однако второе вложение csv, похоже, появляется как «application/vnd.ms-excel», когда он явно является файлом CSV, как и другой файл, который Загрузок совершенно отлично.oracle-javamail csv attachment загрузить

Я использую один и тот же код кода для обоих из них и не могу найти никакой информации по этой проблеме.

Если я передам это письмо себе, я могу без проблем загрузить приложение без каких-либо проблем. Любая помощь будет оценена по достоинству. Как только я получу эту работу, другая ежедневная задача будет автоматизирована!

if(content instanceof java.lang.String){ 
    //emailBody = (String)content; 
} else if(content instanceof Multipart){ 
    System.out.println("is 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) { 
      // Check if plain 
      MimeBodyPart mbp = (MimeBodyPart)part; 
      if (mbp.isMimeType("text/plain")) {        
       //emailBody += (String)mbp.getContent(); 
      } else {        
       // Special non-attachment cases here of 
       // image/gif, text/html, ...         
       String fileName = decodeName(part.getFileName()); 
       File savedir = new File(path+"\\"+fileName); 
       saveFile(savedir, part);         
      } 
     } else if ((disposition != null) && 
       (disposition.equals(Part.ATTACHMENT) || disposition.equals(Part.INLINE))){ 
       // Check if plain 
       MimeBodyPart mbp = (MimeBodyPart)part; 
       if (mbp.isMimeType("text/plain")) {        
        System.out.println("has disp of plain"); 
        //emailBody += (String)mbp.getContent(); 
       } else {        
        System.out.println("has disp of else"); 
        String fileName = decodeName(part.getFileName()); 
        File savedir = new File(path+"\\"+fileName); 
        saveFile(savedir, part);      
       } 
     } 
    } 
} 
else{ 
    System.out.println(message.getContentType()); 
} 

ответ

0

Хотя кажется, что java знает, какой тип электронной почты он получает, получается, что это не так. Поскольку это не стандартный тип, он возвращает его как входной поток. Я смог увидеть содержимое файла с приведенным ниже кодом.

Также обратите внимание, что единственная причина, по которой это произошло, - это тип приложения/vnd.ms-excel, потому что тело письма было пустым.

 InputStream emailIn = (InputStream) message.getContent(); 
    Scanner s = null; 
    try{ 
     s = new Scanner(emailIn).useDelimiter("\\A"); 
    while(s.hasNext()) 
     System.out.println(s.next()); 
    } 
    finally{ 
     s.close(); 
    }