2016-03-15 60 views
0

我的下面的Java类必须使用java邮件将文本文件内容和邮件以及附加的xls文件复制到收件人。JAVA MAIL API:无法将xls文件附加到邮件

现在我可以阅读并发送文本文件内容但无法附加xls文件。

下面是我的代码片段:

static void sendmail() throws IOException,  
MessagingException,AddressException,FileNotFoundException 
    { 

      DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy 
HH:mm:ss"); 
      Calendar cal = Calendar.getInstance(); 
      String to1=getOrderinfo.to1; 
      String to2 = getOrderinfo.to2; 
      String to3 = getOrderinfo.to3; 
      String to4 = getOrderinfo.to4; 
      String from =getOrderinfo.from; 
      String host = getOrderinfo.host; 
      Properties properties = System.getProperties(); 
      properties.setProperty("mail.smtp.host", host); 
      Session session = Session.getDefaultInstance(properties); 
      MimeMessage message = new MimeMessage(session); 
      Multipart multipart = new MimeMultipart(); 



      String pathLogFile = "E:/car_failed_report/log.txt"; 

      try { 

        message.setFrom(new InternetAddress(from)); 
        message.addRecipient(Message.RecipientType.TO, new 
InternetAddress(to1)); 
        message.setSubject(" CAR NOT YET INTEGRATED REPORT at 
: "+dateFormat.format(cal.getTime())); 
        StringBuffer sb = new StringBuffer(); 
        FileInputStream fstream = new 
FileInputStream(pathLogFile); 
        BufferedReader br = new BufferedReader(new 
InputStreamReader(fstream)); 

        String singleLine; 
        while ((singleLine = br.readLine()) != null) 
        { 

         sb.append(singleLine + "<br>"); 
         // CarParser1.sb1.append(singleLine +"<br>"); 
        } 
        br.close(); 
        String allLines; 

        allLines = sb.toString(); 


        String allLines_html=" <html><head><title></title> 
</head>" 
          + "<body >"+allLines+"</body ></html>"; 
        message.setContent(allLines_html, "text/html; 
charset=ISO-8859-1"); 

       MimeBodyPart attachPart = new MimeBodyPart(); 
       File attachement = new File("E:\\car_failed_report 
\\failed.xls"); 
       if (attachement.exists()) { 
        attachPart.attachFile(attachement); 
       } else { 
        System.out.println("ERROR READING THE FILE"); 
        throw new FileNotFoundException(); 
       } 

       Transport.send(message); 



       System.out.println("Email Sent successfully...."); 


       System.out.println(); 

      } 
      catch(FileNotFoundException f1) 
      { 
       System.out.println("File not yet created..this is from 
mailer class"); 

       return; 
      } 
      catch (MessagingException mex) 
      { 
       System.out.println("Invalid Email Address.please provide 
a valid email id to send with"); 
       mex.printStackTrace(); 


      } 

任何一个可以帮助我附上xls文件?

在此先感谢。

+0

抱歉,但如果你alread知道的问题,解决它......我出去了。附加一个文件即使打印它也没有阅读它,或者设置为正文内容......但如果你不关心我们的建议,我不能帮助。 –

+0

从本教程http://www.mkyong.com/spring/spring-sending-e-mail-with-attachment/获取想法,并检查是否可以发送xls文件。 – Lucky

+0

@ jordi:谢谢你宝贵的时间 –

回答

1

您使用附件创建了正文部分,但未将其添加到消息中。更换你的代码开始message.setContent:

  MimeMultipart mp = new MimeMultipart(); 
      MimeBodyPart body = new MimeBodyPart(); 
      body.setText(allLines_html, "iso-8859-1", "html"); 
      mp.addBodyPart(body); 

      MimeBodyPart attachPart = new MimeBodyPart(); 
      File attachement = new File("E:\\car_failed_report\\failed.xls"); 
      if (attachement.exists()) { 
       attachPart.attachFile(attachement); 
       mp.addBodyPart(attachPart); 
      } else { 
       System.out.println("ERROR READING THE FILE"); 
       throw new FileNotFoundException(); 
      } 
      message.setContent(mp); 
+0

太棒了。你节省了我很多时间....它工作正常。 –