2015-04-08 85 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:它連接到服務器。所以在連接和發送郵件時也不會有任何問題。請再檢查一次 –