2016-04-11 21 views
0

私はユーザーに電子メールを送信する簡単なスプリングアプリケーションを作成しました。これは "SimpleMailMessage"と完全に連携しているようです(メッセージ全体がプレーンテキストになります)。私が欲しいのは、添付ファイルとしていくつかのファイルを送信することです。したがって、私はjavax.mail.internet.MimeMessageを使用しようとしましたが、トレースすることができないいくつかのワイヤードエラーを取得しようとしました。以下は私のスニペットSpring JavaMailSenderを使用して添付ファイルまたはインラインでファイルを送信

try { 
      javax.mail.internet.MimeMessage message = mailSender.createMimeMessage(); 
      MimeMessageHelper helper = new MimeMessageHelper(message,true); 
      helper.setTo(employee.getEmailId()); 
      helper.setFrom("[email protected]"); 
      helper.setText(mailMessage, true); 
      helper.setSubject(subject); 
      FileSystemResource res = new FileSystemResource(new File("C:/software/Koala.jpeg")); 
      helper.addAttachment("happyBirthday", res); 
      mailSender.send(message); 
     } catch (MessagingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

エラーがあるさ:

Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "javax.mail.internet.MimeBodyPart.setDataHandler(Ljavax/activation/DataHandler;)V" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the current class, org/springframework/mail/javamail/MimeMessageHelper, and the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) for resolved class, javax/mail/internet/MimeBodyPart, have different Class objects for the type n/DataHandler;)V used in the signature 
    at org.springframework.mail.javamail.MimeMessageHelper.addAttachment(MimeMessageHelper.java:997) 
    at org.springframework.mail.javamail.MimeMessageHelper.addAttachment(MimeMessageHelper.java:1077) 
    at org.springframework.mail.javamail.MimeMessageHelper.addAttachment(MimeMessageHelper.java:1047) 
    at Example1.sendEmail(Example1.java:89) 

すべてのヘルプは本当にいただければ幸いです。

答えて

0

すべてはあなただけのメッセージにファイルを添付し、これを行うことができます

FileSystemResource res = new FileSystemResource(new File("C:/software/Koala.jpeg")); 

除いてよさそうです。

helper.addAttachment("happyBirthday", new File("C:/software/Koala.jpeg")); 
+0

まだ私は上記と同じエラーが発生しています – user3092131

+0

おそらく2つのバージョンのJava Activation Frameworkによって問題が発生しているようです。 classpathからactivation.jarを削除することで問題が解決するかどうか確認してください。 – Sachin

+0

jbossからactivation.jarを削除しただけでなく、jbossのlibフォルダにコンパイルされた特定のメールjarをすべて削除しました – user3092131

1

バイト[]型を使用してみてください、あなたはこのコードを使用して、[]バイトにファイルを変換する必要があります。

Path path = Paths.get("path/to/file"); 
byte[] content = Files.readAllBytes(path); 

そして、あなたがメールを送信する準備ができたら、この関数を呼び出します:

public void sendEmail(String to,String from,String sub,String msgBody,byte[] content){ 

    MimeMessage message = mailSender.createMimeMessage(); 
    try { 
     MimeMessageHelper helper = new MimeMessageHelper(message, true); 
     helper.setFrom(from); 
     helper.setTo(to); 
     helper.setSubject(sub); 
     helper.setText(msgBody); 
     helper.addAttachment("MyTestFile.txt", new ByteArrayResource(content)); 
     mailSender.send(message); 
    } catch (MessagingException e) { 

     e.printStackTrace(); 
    } 
} 
+0

に変換しようとすると、jpgファイルを添付ファイルとして送信することは可能でしょうか – user3092131

+0

できることを確かめてください! 'MyTestFile.txt'を' helper.addAttachment() 'の' Koala.jpeg'に変更しました – Spartan

+0

私はあなたに言ったことを試しましたが、同じ問題がまだ残っています – user3092131

関連する問題