web-dev-qa-db-ger.com

javax.mail.MessagingException: Konnte keine Verbindung zum SMTP-Host herstellen: localhost, Port: 25

Ich erhalte Probleme beim Senden von E-Mails.

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 verwende unter Code-Snipet.

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

das E-Mail-Sendeprogramm wird auf Tomcat 5 ausgeführt. In einigen Fällen funktioniert es einwandfrei und in einigen Fällen wird die Ausnahme überschritten. Wenn es sich um eine Ausnahme handelt, die über der Ausnahme liegt, wird bei jedem Zugriff das gleiche Ergebnis angezeigt. Sobald ich den Tomcat-Server neu starte, funktioniert er wieder einwandfrei.

Also konnte ich nicht finden, was der Grund ist. da funktioniert manchmal dasselbe und führt manchmal über die Ausnahme hinaus.

Kann mir jemand bei diesem Problem helfen?.

7
Sri Niwash
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);}
  }

}

11
Pape Diop

Aus Ihrer Ausnahme geht eindeutig hervor, dass versucht wird, eine Verbindung zu localhost und nicht zu 10.101.3.229 herzustellen. 

ausnahme-Snippet: Could not connect to SMTP Host: localhost, port: 25;

1.) Bitte überprüfen Sie, ob eine Nullprüfung vorhanden ist, die localhost als Standardwert setzt

2.) Nach dem Neustart bedeutet dies, dass der korrekte Wert nur aus den Eigenschaften übernommen wird, wenn er einwandfrei funktioniert. Beim nächsten Durchlauf wird der Wert auf den Standardwert gesetzt. Behalten Sie also das Eigenschaftsobjekt als Einzelobjekt bei und verwenden Sie es in Ihrem gesamten Projekt

2
Arun

Versuchen Sie, die Eigenschaft beim Starten von JVM festzulegen. Fügen Sie beispielsweise -Djava.net.preferIPv4Stack=true hinzu.

Sie können es nicht einstellen, wenn Code ausgeführt wird, da Java.net es beim Starten von jvm nur liest.

Und zur Ursache gibt dieser Artikel einige Hinweise: Warum brauche ich Java.net.preferIPv4Stack = true nur auf einigen Windows 7-Systemen?

0
freeman

Das darf nicht passieren. Können Sie dies versuchen? Verwenden Sie die Systemeigenschaften und legen Sie die Eigenschaft wie folgt fest:

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

Wenn Sie einen Anschluss haben, legen Sie diesen ebenfalls fest.

properties.setProperty("mail.smtp.port", "8080");
0
Swaprks

Ich hatte auch den gleichen Fehler ... Der Grund dafür ist, dass es in Ihrer Umgebung keinen SMTP-Server gibt. Zum Erstellen eines gefälschten SMTP-Servers habe ich diese Datei "fake-smtp.jar" zum Erstellen eines virtuellen Servers und zum Abhören aller Anforderungen verwendet. Wenn Sie mit dem gleichen Fehler konfrontiert werden, empfehle ich Ihnen, diese Dose zu verwenden und nach dem Extrahieren auszuführen. Versuchen Sie dann, die Anwendung auszuführen. 

Neueste Version von Fake SMTP herunterladen

0
Ashwani Sharma