2015-04-08 82 views
-1

我已经编写了用java发送邮件的代码(我正在使用java邮件API)。这里是用户名和密码(为了验证目的)我给我的域名,因为我想让我的电子邮件服务器被使用。用java发送邮件(我正在使用java邮件API)

的问题是,当我从本地主机它工作正常,但是当我在我的生活在临时服务器上部署,并试图发送邮件发送邮件,它给以下异常:

Apr 08, 2015 7:32:26 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [spring] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: mail.dreamdays.ae, port: 25; 
    nested exception is: 
    java.net.ConnectException: Connection timed out. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: mail.dreamdays.ae, port: 25; 
    nested exception is: 
    java.net.ConnectException: Connection timed out; message exceptions (1) are: 
Failed message 1: javax.mail.MessagingException: Could not connect to SMTP host: mail.dreamdays.ae, port: 25; 
    nested exception is: 
    java.net.ConnectException: Connection timed out] with root cause 
java.net.ConnectException: Connection timed out 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:579) 
    at java.net.Socket.connect(Socket.java:528) 
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525) 
    at javax.mail.Service.connect(Service.java:291) 
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:389) 
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:340) 
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:336) 
    at com.service.MailMail.sendMail(MailMail.java:34) 
    at com.controller.UserController.saveUser(UserController.java:143) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:647) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:603) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:197) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

代码在下面,请检查并帮助我。

public class MailDao { 
private static final String SMTP_HOST_NAME = "mail.dreamdays.ae"; 

    private static final String SMTP_AUTH_USER ="[email protected]"; 
    private static final String SMTP_AUTH_PWD = "********"; 


public void postMail(String emailTo, String recipients[ ], String subject, String message , String from) throws MessagingException, AuthenticationFailedException 
    { 
     boolean debug = false; 
     //Set the host smtp address 
    Properties props = new Properties(); 
     props.put("mail.smtp.host", SMTP_HOST_NAME); 
     props.put("mail.smtp.auth", "true"); 


try{ 

    Authenticator auth = new SMTPAuthenticator(); 
    Session session = Session.getInstance(props, auth); 
    // session.setDebug(debug); 
    // create a message 
    Message msg = new MimeMessage(session); 
    // set the from and to address 
    InternetAddress addressFrom = new InternetAddress(from); 
    msg.setFrom(addressFrom); 
// InternetAddress[] addressTo = new InternetAddress[recipients.length]; 

    InternetAddress[] emailToArr = new InternetAddress[1]; 
    emailToArr[0] = new InternetAddress(emailTo); 
    System.out.println("emailTo---"+emailTo); 
    msg.setRecipients(Message.RecipientType.TO, emailToArr); 

    // if(recipients.length >0) 
    // msg.setRecipients(Message.RecipientType.CC, emailToArr); 

    // Setting the Subject and Content Type 
    msg.setSubject(subject); 
    msg.setContent(message, "text/html"); 
    Transport.send(msg); 


     System.out.println("emailTo3---"+emailTo); 
    }catch(Exception e){ 
     System.out.println("mail sending failed:--"+e); 
    } 

     } 
    private class SMTPAuthenticator extends javax.mail.Authenticator { 
     public PasswordAuthentication getPasswordAuthentication() { 
      String username = SMTP_AUTH_USER; 
      String password = SMTP_AUTH_PWD; 
      return new PasswordAuthentication(username, password); 
      } 
     } 
} 
+0

您的问题尚不清楚。 –

+2

这个例外很明显,你在“javax.mail.MessagingException:无法连接到SMTP主机:mail.dreamdays.ae,端口:25;”中不了解什么? –

+0

似乎你的服务器找不到邮件服务器。检查您的服务器的网络,DNS和防火墙设置。 –

回答

0

异常意味着与主机的连接超时,这可能是因为主机不可用。所以,验证到主机的连接是否可以使用telnet

telnet mail.dreamdays.ae 25 

您也可以使用telnet那么不应该在发送邮件的任何问题进行连接。

因此,请确保主机服务器已启动并首先可用

+0

嘿,谢谢你的回答,当我使用telnet mail.dreamdays.ae验证连接时,您的答案是25。它显示Trying 216.154.217.84 ... 已连接到mail.dreamdays.ae。 转义字符是'^]'。 220 dreamdays.ae ESMTP Sendmail 8.13.1/8.13.1;星期三,8四月2015 04:55:52 -0400这意味着它连接到邮件服务器mail.dreamdays.ae?如果连接,那么可能是另一个问题,由于哪些邮件不在现场服务器上? –

+0

@ChandraPrakashVerma:它连接到服务器。所以在连接和发送邮件时也不会有任何问题。请再检查一次 –