2016-10-27 6 views
2

私は、マルチメールを送信するためにjavax.mail。*を使用するクラスを持っています。 contentでファイルを送信しようとすると、FileNotFoundExceptionがスローされます。いつまでも、いつ使用するのですかattachmentBodyPart.setContent(...)電子メールを送信しますが、ファイルの内容(テキストファイル以外のファイルを破損させる種類)を置き換えます。私も試したattachmentBodyPart.attachFile(...)私はまた、ファイルの絶対パスを与えた後でも、以前と同じ例外をスローします。以下の私のクラスである - setContent(...)方法javax.mailはコンテンツを設定せずに添付ファイルを送信できません

java.io.FileNotFoundException: test.txt (The system cannot find the file specified) 
at java.io.FileInputStream.open0(Native Method) 
at java.io.FileInputStream.open(Unknown Source) 
at java.io.FileInputStream.<init>(Unknown Source) 
at javax.activation.FileDataSource.getInputStream(Unknown Source) 
at javax.activation.DataHandler.writeTo(Unknown Source) 
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1652) 
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:961) 
at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:553) 
at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:81) 
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source) 
at javax.activation.DataHandler.writeTo(Unknown Source) 
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1652) 
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1850) 
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1259) 
[wrapped] javax.mail.MessagingException: IOException while sending message; nested exception is: java.io.FileNotFoundException: test.txt (The system cannot find the file specified) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1308) at javax.mail.Transport.send0(Transport.java:255) at javax.mail.Transport.send(Transport.java:124) at test.project.notification.service.impl.notifier.sendEmail(Notifier.java:73) at test.project.rest.RestClass.receive(RestClass.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:89) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:107) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) 

答えて

1

なし

//all import statements 
import javax.activation.DataHandler; 
import javax.activation.DataSource; 
import javax.activation.FileDataSource; 
import javax.mail.BodyPart; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Multipart; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 

@Component 
@Service 
public class Notifier { 

private static final Logger LOG = LoggerFactory.getLogger(Notifier.class); 

@Override 
public ResponseEntity<Object> sendEmail(InternetAddress[] to, 
             InternetAddress from, 
             InternetAddress[] cc, 
             String subject, 
             String body, 
             File attachment) { 

    Properties properties = System.getProperties(); 
    //setting all the required properties 
    LOG.info("SMTP properties set!"); 

    try 
    {     
      Session session = Session.getDefaultInstance(properties); 
      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress(mail_from)); 
      message.addRecipients(Message.RecipientType.TO, to); 
      message.addRecipients(Message.RecipientType.CC, cc); 

      if(subject.isEmpty() || subject.equalsIgnoreCase("")){ 
      subject="No Subject"; 
      } 
      message.setSubject(subject); 

      message.setHeader("X-Priority", "1"); 


      Multipart multipart = new MimeMultipart(); 
      //set attachment 
      if(attachment != null){ 
       MimeBodyPart attachmentBodyPart = new MimeBodyPart(); 
       DataSource source = new FileDataSource(attachment); 
       attachmentBodyPart.setDataHandler(new DataHandler(source)); 

       attachmentBodyPart.setFileName(attachment.getName()); 
       attachmentBodyPart.setContent(body, "text/plain;charset=utf-8"); 
       //attachmentBodyPart.attachFile(attachment); 
       //create a mime body part for containing body 
       MimeBodyPart messageBodyPart = new MimeBodyPart(); 
       messageBodyPart.setContent(body, "text/html;charset=utf-8"); 

       multipart.addBodyPart(messageBodyPart); 
       multipart.addBodyPart(attachmentBodyPart); 


       LOG.info("Attachment and Body added to mail"); 
       message.setContent(multipart); 
      } 
      Transport.send(message); 
      return new ResponseEntity<Object>(HttpStatus.ACCEPTED); 
    } catch (Exception e){e.printStackTrace();return null} 

マイ例外あなたの例外から:あなたは通知を送信しているファイルが使用できないように思えます。呼び出しメソッドで確認してください。

+0

ありがとうございました:)問題は呼び出し元のメソッドにありました。ファイルを解析できませんでした。 –

関連する問題