2016-03-31 4 views
0

Ich entwickle eine Web-Anwendung mit Feder MVC, schickte eine E-Mail an den Benutzer, wenn ich auf Schaltfläche in HTML-Formular gesendet zeige es die folgende Ausnahme und hier habe ich meinen vollständigen Code ...Senden Sie E-Mail-Fehler in Java + Frühling 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);} 

} 

meine Ausnahme ist verschachtelte Ausnahme ist:

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

Ihr Passwort entfernen, einige Beispieltext setzen –

Antwort

0

ich glaube, Sie brauchen eine Mailsender wie folgt aus:

@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; 
} 

Sie können Ihre MailSender wie diese oder in .xml config einstellen.

Jetzt haben Sie Ihren MailSender. Sie können eine Mail wie folgt senden:

@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); 
} 

Es funktioniert für mich.

0

Ändern Sie diese Zeile:

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

dazu:

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));