2016-03-31 11 views
0

私は春MVCを使用してWebアプリケーションを開発し、ユーザーに電子メールを送信しました.HTMLフォームの送信ボタンをクリックすると、次の例外が表示されます。java + spring MVCで電子メールエラーを送信する

public void sendMail(Employee employee) { 
    String to=employee.getEmailId();//change accordingly 

     //Get the session object 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.socketFactory.port", "587"); 
     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.smtp.debug", "true"); 
     props.put("mail.smtp.port", "587"); 
     props.put("mail.smtp.socketFactory.fallback", "false"); 

     Session session = Session.getDefaultInstance(props, 
     new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication("[email protected]","mypassword");//change accordingly 
     } 
     }); 

     //compose message 
     MimeMessage message = new MimeMessage(session); 
     try { 
     //MimeMessage message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]"));//change accordingly 
     message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); 
     message.setSubject("Email_OTP"); 
     message.setText(employee.getName()); 

     //send message 
    // Transport.send(message); 
     Transport transport = session.getTransport("smtps"); 
     transport.connect("[email protected]", Integer.valueOf(587),"[email protected]", "mypassword"); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 

     System.out.println("message sent successfully"); 

     } catch (MessagingException e) {throw new RuntimeException(e);} 

} 

私の例外はある ネストされた例外は次のとおりです。

java.net.UnknownHostException: [email protected]] with root cause 
    java.net.UnknownHostException: [email protected] 
     at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
     at java.net.PlainSocketImpl.connect(Unknown Source) 
     at java.net.SocksSocketImpl.connect(Unknown Source) 
     at java.net.Socket.connect(Unknown Source) 
     at sun.security.ssl.SSLSocketImpl.connect(Unknown Source) 
     at sun.security.ssl.BaseSSLSocketImpl.connect(Unknown Source) 
     at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288) 
     at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231) 
     at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900) 
     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638) 
     at javax.mail.Service.connect(Service.java:295) 
     at com.prakash.employee.controller.EmployeeController.sendMail(EmployeeController.java:105) 
     at com.prakash.employee.controller.EmployeeController.addEmployee(EmployeeController.java:51) 
     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:215) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
     at org.apache.catalina.core.Appl 

** 
+1

いくつかのサンプルテキストを入れて、あなたのパスワードを削除します –

答えて

0

私はあなたがこのようなMailSenderのが必要だと思う:

@Bean 
public org.springframework.mail.javamail.JavaMailSenderImpl mailSender() { 
    final JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); 
    mailSender.setHost(HOST); 
    mailSender.setUsername(USERNAME); 
    mailSender.setPassword(PASSWORD); 
    mailSender.setPort(PORT); 
    final Properties properties = new Properties(); 
    properties.setProperty("mail.smtp.auth", "true"); 
    properties.setProperty("mail.smtp.starttls.enable", "true"); 
    mailSender.setJavaMailProperties(properties); 
    return mailSender; 
} 

MailSenderは、このように設定することも、.xml設定で設定することもできます。

今、あなたはあなたのMailSenderを持っています。

@Autowired 
private MailSender mailSender; 

@Override 
public void confirmSignUp(String email, String username, String url) { 
    final SimpleMailMessage msg = new SimpleMailMessage(); 
    msg.setFrom("[email protected]"); 
    msg.setTo(email); 
    msg.setSubject("aaa"); 
    final String body = "hi"; 
    msg.setText(body); 
    mailSender.send(msg); 
} 

これは私のために働きます。

0

変更この行:これまで

message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); 

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); 
関連する問題