邮件发送在java(我正在使用java邮件api)

时间:2015-04-08 07:51:03

标签: java javamail sendmail

我已经编写了java中的邮件发送代码(我正在使用java mail api)。这里是uerId和密码(出于身份验证的目的)我给了我的域名,因为我希望使用我的电子邮件服务器。

问题是,当我从localhost发送邮件时,它工作正常,但是当我在我的实时登台服务器上部署并尝试发送邮件时,它会给出以下异常:

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 ="cpverma@dreamdays.ae"; 
     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);
             } 
         }
}

1 个答案:

答案 0 :(得分:0)

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

telnet mail.dreamdays.ae 25

此外,您可以使用telnet进行连接,然后发送邮件时不会出现任何问题。

因此,请确保主机服务器已启动且可在第一时间使用