2013-10-21 4 views
7

전자 메일을 보내는 동안 문제가 발생합니다.javax.mail.MessagingException : SMTP 호스트에 연결할 수 없습니다 : localhost, port : 25

javax.mail.SendFailedException: Sending failed; 
    nested exception is: 
    javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25; 
    nested exception is: 
    java.net.ConnectException: Connection refused: connect 
    at javax.mail.Transport.send0(Transport.java:219) 
    at javax.mail.Transport.send(Transport.java:81) 
    at org.apache.jsp.online_005fScheme_005fSend_005fMail_jsp.sendMail(online_005fScheme_005fSend_005fMail_jsp.java:116) 
    at org.apache.jsp.online_005fScheme_005fSend_005fMail_jsp._jspService(online_005fScheme_005fSend_005fMail_jsp.java:416) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:308) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879) 
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
    at java.lang.Thread.run(Thread.java:619) 

나는 코드 snipet 이하로 사용합니다.

Properties props = new Properties(); 
    props.put("mail.smtp.host", "10.101.3.229"); 

이메일 전송 프로그램은 바람둥이 5.이 잘 작동 몇 번하고 예외 위의 결과를 몇 번을 실행 중입니다. 일단 예외가 발생하면 모든 액세스에서 동일하게 나타납니다. 하지만 Tomcat 서버를 다시 시작하자마자 다시 정상적으로 작동하기 시작합니다.

그래서 나는 이유를 찾을 수 없습니다. 때로는 동일하게 잘 작동하기 때문에 예외적 인 경우도 있습니다.

누구든지이 문제를 해결할 수 있습니까?

답변

2

localhost에 연결을 시도하고 당신의 예외는 매우 명확하지 10.101.3.229

예외 조각 : 로컬 호스트를 설정하는 모든 NULL 체크가있는 경우 Could not connect to SMTP host: localhost, port: 25;

1.) 확인하시기 바랍니다 기본값으로

2) 2. 다시 시작한 후에는 정상적으로 작동하면 처음 실행시에만 적절한 값이 속성에서 가져 왔고 다음 실행에서는 값이 기본값으로 설정됨을 의미합니다. 그래서 싱글 하나로서 특성 객체를 유지하고 프로젝트

+1

[일반적인 실수]에 대한 JavaMail FAQ (http://www.oracle.com/technetwork/java/javamail/faq/index.html#commonmistakes)도 확인하십시오. –

11
package sn; 
import java.util.Date; 
import java.util.Properties; 
import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
public class SendEmail { 
    public static void main(String[] args) { 
    final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
    // Get a Properties object 
    Properties props = System.getProperties(); 
    props.setProperty("mail.smtp.host", "smtp.gmail.com"); 
    props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); 
    props.setProperty("mail.smtp.socketFactory.fallback", "false"); 
    props.setProperty("mail.smtp.port", "465"); 
    props.setProperty("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.debug", "true"); 
    props.put("mail.store.protocol", "pop3"); 
    props.put("mail.transport.protocol", "smtp"); 
    final String username = "[email protected]";// 
    final String password = "0000000"; 
    try{ 
    Session session = Session.getDefaultInstance(props, 
          new Authenticator(){ 
          protected PasswordAuthentication getPasswordAuthentication() { 
           return new PasswordAuthentication(username, password); 
          }}); 

    // -- Create a new message -- 
    Message msg = new MimeMessage(session); 

    // -- Set the FROM and TO fields -- 
    msg.setFrom(new InternetAddress("[email protected]")); 
    msg.setRecipients(Message.RecipientType.TO, 
         InternetAddress.parse("[email protected]",false)); 
    msg.setSubject("Hello"); 
    msg.setText("How are you"); 
    msg.setSentDate(new Date()); 
    Transport.send(msg); 
    System.out.println("Message sent."); 
    }catch (MessagingException e){ System.out.println("Erreur d'envoi, cause: " + e);} 
    } 

} 이런 일이 안

+0

이걸 잘 봐라. –

+2

코드 대신 단지 설명하는 것이 더 좋다. –

+0

나는 포트에 문제가있어서 마지막 답을 완성하고 싶었다. defaut port를 25 대신 465로 변경해야합니다. props.setProperty ("mail.smtp.socketFactory.port", "465"); socketFactory를 추가했다. –

0

모두에 그것을 사용합니다. 이러실 수 있습니까? 를 사용하여 시스템의 특성과 아래와 같은 속성을 설정 :

Properties properties = System.getProperties(); 
// Setup mail server 
properties.setProperty("mail.smtp.host", "10.101.3.229"); 

을 그리고 당신은 관련된 포트가있는 경우, 다음도이 설정합니다. 예를 들어, -Djava.net.preferIPv4Stack=true을 추가, JVM을 시작할 때

properties.setProperty("mail.smtp.port", "8080"); 
관련 문제