当前位置: 首页 > 知识库问答 >
问题:

oracle-javamail csv附件下载

鲁鸿朗
2023-03-14

最近我在通过oracle-javamail从我的电子邮件下载CSV时遇到了一个问题。我发现第一个工作正常(来自大型机服务器),但是第二个csv附件似乎是“应用程序/vnd.ms-excel”,当它显然是一个. csv文件时,就像另一个下载完全正常的文件一样。

我在这两个问题上使用了相同的代码,但找不到有关此问题的任何信息。

如果我把那封电子邮件发给自己,我可以神奇地下载附件而没有任何问题。任何帮助都将不胜感激。一旦我开始工作,另一个日常任务就会自动化!

    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());
}  

共有1个答案

司徒翼
2023-03-14

虽然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();
    }
 类似资料:
  • 如何从内容类型为“多部分/备选”的邮件中下载附件;

  • 我试图通过javamail和imap从我的电子邮件下载所有新的电子邮件附件。这一切都很好,但有些附件在PDF中被解码为BASE64,这是我的声明 如何获取此附件并将其下载到硬盘? 到目前为止已经尝试过了,第一个IF语句使用Base64解码捕获附件。 如果有一种简单易行的方法可以将附件下载到我的磁盘,也可以使用NodeJS。尝试过node-imap,但我在那里遇到了同样的错误。

  • 问题内容: 我查看了参考文档,Spring似乎对发送邮件有很好的支持。但是,我需要登录到邮件帐户,阅读邮件并下载所有附件。Spring mail API是否支持下载邮件附件? 我知道您可以使用Java Mail API来执行此操作,但是在过去,我发现使用它非常冗长且令人不愉快。 编辑 :我收到了一些指向教程的答复,这些教程描述了如何发送带有附件的邮件,但是我要问的是如何从 收到的 邮件中 读取 附

  • 本文向大家介绍Oracle Database 附录提示,包括了Oracle Database 附录提示的使用技巧和注意事项,需要的朋友参考一下 示例 “使用DIRECT PATH方法插入新行”。 该APPEND提示指示引擎使用直接路径加载。这意味着引擎将不会使用使用内存结构和标准锁的常规插入,而是将数据直接写入表空间。始终创建新的块,这些块将追加到表的段中。这样会更快,但是有一些限制: 在提交或回

  • 本文向大家介绍java、javascript实现附件下载示例,包括了java、javascript实现附件下载示例的使用技巧和注意事项,需要的朋友参考一下 在web开发中,经常需要开发“下载”这一模块,以下给出一个简单的例子。 在服务器端,使用java开发: 当我们在前端请求这个地址时,服务器先找出文件,设置响应头,然后通过流输出到浏览器端。 浏览器在头中发现该响应的主体是流文件,则自动会调用另存

  • 我正在一个apache camel项目中下载收件箱中的任何附件,以实现我遵循http://camel.apache.org/mail.html中使用附件的邮件示例中的信息。除了附件的文件名带有特殊的字符或空格外,其他操作都很正常。例如,如果附件的文件名为“voucher.pdf”,则程序将运行并下载该文件,但如果附件的文件名为“Pase de abordar en Línea(1).pdf”,则会