2013-10-21 10 views
7

Ich erhalte Probleme beim Senden von E-Mails.javax.mail.MessagingException: Verbindung zum SMTP-Host konnte nicht hergestellt werden: 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) 

ich unter Codestück verwenden.

E-Mail senden Programm läuft auf Tomcat 5. Manchmal funktioniert es gut und einige Male ergibt es über Ausnahme. Sobald es sich um eine Ausnahme handelt, ergibt sich dasselbe bei jedem Zugriff. Aber sobald ich Tomcat Server neu starte, funktioniert es wieder gut.

So konnte ich nicht finden, was Grund ist. wie manchmal funktioniert das gleiche gut und manchmal Ergebnisse über Ausnahme.

Kann mir jemand dieses Problem helfen.

Antwort

2

Es ist ganz klar aus Ihrer Ausnahme, dass es zu localhost zu verbinden versucht und nicht zu 10.101.3.229

Ausnahme Schnipsel: Could not connect to SMTP host: localhost, port: 25;

1.) Bitte überprüfen Sie, ob es eine NULL-Prüfung ist die localhost Einstellung ist als Standardwert

2.) Nach dem Neustart, wenn es in Ordnung ist, bedeutet dies, dass nur bei der ersten Ausführung der richtige Wert aus Properties übernommen wurde und ab dem nächsten Run der Wert auf default gesetzt wird. So halten die Eigenschaft-Objekt als Singleton ein und verwenden Sie es Allover-Projekt

+1

Überprüfen Sie auch die JavaMail-FAQ für diese [häufige Fehler] (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

Schau dir das an, es läuft gut –

+2

es ist besser zu erklären, anstatt nur Code –

+0

Ich wollte die letzte Antwort vervollständigen, weil Sie ein Problem von Port haben. Sie sollten den defaut Port mit 465 anstelle von 25 ändern. Props.setProperty ("mail.smt.socketFactory.port", "465"); und fügte die SocketFactory hinzu. –

0

Dies sollte nicht passieren. Kannst du es versuchen? Verwenden Sie die Systemeigenschaften und die Eigenschaft festgelegt wie folgt:

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

Und wenn Sie einen Port zugeordnet haben, dann dies auch einstellen.

properties.setProperty("mail.smtp.port", "8080"); 
Verwandte Themen