2017-08-07 42 views
0

在我的Java Web應用程序,我需要從我的項目資源訪問路徑圖像內並將其發送給另一個sendmail.java類我怎麼能拍攝圖像從資源文件夾路徑誰能告訴我如何從項目資源文件夾的圖像路徑和發送給另一個類的java月食

我的圖像文件夾:

image folder structure

當我用下面的代碼試圖它顯示file not found error

我試着用這樣的:

String imgpath="/resources/HappyBirthday.JPG"; 
SendEmail stp=new SendEmail(); 
stp.mail(From, To,Name,text,imgpath); 

SendEmail.java:

public String mail(String From,String To,String Name,String text,String imgPath){ 
Properties props = new Properties(); 
      props.put("mail.smtp.host", "mail.com"); 
      props.put("mail.smtp.socketFactory.port", "465"); 
      props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
      props.put("mail.smtp.auth", "false"); 
      props.put("mail.smtp.port", "25"); 
      // Get the default Session object. 
      Session session = Session.getDefaultInstance(props); 
try {    
      MimeMessage message = new MimeMessage(session); 
      message.setFrom(new InternetAddress(From)); 
      message.addRecipient(Message.RecipientType.TO, new InternetAddress(To)); 
      message.setSubject("Wishes!", "UTF-8"); 
      message.setText(text, "UTF-8"); 

      // first part (the html) 
       BodyPart messageBodyPart = new MimeBodyPart(); 
       String htmlText = "<H1>Hello</H1><img src=\"cid:image\">"; 
       messageBodyPart.setContent(htmlText, "text/html"); 
       // add it 

      // second part (the image) 
       messageBodyPart = new MimeBodyPart();   
       DataSource fds = new FileDataSource(imgPath); //here adding image path to send mail like image and text 
       messageBodyPart.setDataHandler(new DataHandler(fds)); 
       messageBodyPart.setHeader("Content-ID", "<image>");   
      MimeMultipart multipart = new MimeMultipart("related"); 
      multipart.addBodyPart(messageBodyPart); 
      message.setContent(multipart); 
      // Send message 
      Transport.send(message); 
      System.out.println("Sent message successfully....");   
      }catch (MessagingException mex) { 
      mex.printStackTrace(); 
      System.out.println(mex); 
      } 
}  

謝謝

+0

您是否試過'「/HappyBirthday.JPG」'? – SilverNak

+0

HI,@ SilverNak,我試着用你的代碼顯示同樣的異常'javax.mail.MessagingException:發送消息時發生IOException; 嵌套的異常是: \t java.io.FileNotFoundException:\ HappyBirthday.JPG(系統找不到指定的文件)' – phani

+0

然後你必須通過classloader讀取它。檢查@StanislavL的回答 – SilverNak

回答

0

它iis的不正確的期待文件。如果您的代碼是在jar中編譯的,則該文件不可用。

而是使用

InputStream inputStream = this.getClass().getResourceAsStream("/HappyBirthday.JPG"); 

ByteArrayDataSource ds = new ByteArrayDataSource(inputStream, "image/jpg"); 

當代碼被編譯資源移到classes和資源流而不是文件可以在那裏訪問。

+0

HI,@ StanislavL,我怎麼能發送到另一個類可以請你告訴我 – phani

+0

嗨,@ StanislavL,當我用你的代碼我得到這個異常的異常有occuredjava.lang.ClassCastException:JAVA。 io.ByteArrayInputStream不能轉換爲org.omg.CORBA.portable.InputStream,但我使用'import java.io.InputStream'這一個只有 – phani

0

如果你使用Maven,你應該添加到您的pom.xml

<resources> 
     <resource> 
      <directory>${basedir}/resources</directory> 
      <includes> 
       <include>**/*</include> 
      </includes> 
     </resource> 
    </resources> 

,然後它會只

String imgpath="HappyBirthday.JPG"; 

工作,我很抱歉,如果我錯了關於Maven ,我仍然無法對問題發表評論

+0

我沒有使用Maven – phani

相關問題