2015-09-18 1 views
1

500 ошибка - вложенное исключение - org.springframework.mail.MailPreparationException: не удалось подготовить почту; nested exception is java.lang.NullPointerExceptionNullPointerException при добавлении функции «addinline» в mimemessage

Я пытаюсь создать электронную почту, используя smtp-сервер. Я могу генерировать письма без добавления inlne-изображения, тогда как когда я добавляю функцию «addinline», я получаю ошибку nullpointer на экране вывода и не удалось создать электронные письма, изображения не были получены из системы. Я получаю такую ​​же ошибку, когда я пытаюсь отправить вложения.

в реализации дао

@Autowired 
private JavaMailSender mailSender; 


mailSender.send(new MimeMessagePreparator() { 
     public void prepare(MimeMessage mimeMessage) throws MessagingException, IOException { 
    MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8"); 
    message.setFrom(from); 
    message.setTo(recipientAddress); 
    message.setSubject("Subject"); 
     message.setText("<html><body><img src=\"cid:identifier1234\"/></body></html>", true); 
     FileSystemResource res = new FileSystemResource(new File("D:\images\photo.svg.png")); 
      message.addInline("identifier1234", res); 
    } 
    }); 

Bean класс в XML

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
    <property name="host" value="smtp.com" /> 
    <property name="port" value="25" /> 

    <property name="username" value="[email protected]" /> 
    <property name="password" value="[email protected]" /> 
    <property name="javaMailProperties"> 
     <props> 
      <prop key="mail.transport.protocol">smtp</prop> 
      <prop key="mail.smtp.auth">true</prop> 
      <prop key="mail.smtp.starttls.enable">true</prop> 
     </props> 
    </property> 
</bean> 

ошибка в окне вывода

SEVERE: Servlet.service() for servlet [welcome] in context with path [/registrationForm] threw exception [Request processing failed; nested exception is org.springframework.mail.MailPreparationException: Could not prepare mail; nested exception is java.lang.NullPointerException] with root cause 
java.lang.NullPointerException 
at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:226) 
at javax.mail.internet.MimeUtility.getEncoding(MimeUtility.java:299) 
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1375) 
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021) 
at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419) 
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1354) 
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1021) 
at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:419) 
at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:1354) 
at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2107) 
at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2075) 
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:411) 
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340) 
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:355) 
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:344) 
at com.registrationForm.dao.DocumentDaoImpl.generateEmail(DocumentDaoImpl.java:182) 
at com.registrationForm.service.DocumentServiceImpl.generateEmail(DocumentServiceImpl.java:45) 
at com.registrationForm.controller.DocumentController.saveForm(DocumentController.java:84) 
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.invoke(InvocableHandlerMethod.java:219) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
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) 
+0

"D: \ images \ photo.svg.png", это настоящий путь к файлу? –

ответ

0

Какая линия находится в вашей реализации DAO 182? Я предполагаю объявление FileSystemResource. Попробуйте разбить эту строку так:

File file = new File(/* your file path*/); 
if(!file.exists())System.out.println("File doesn't exist"); 
else { 
    //do stuff 
} 

Если вы видите сообщение в консоли, ваш путь к файлу неверен.