Erreur d'envoi de courrier, javax.courrier.MessagingException: Impossible de se connecter à SMTP hôte: localhost, port: 25;


Voici mon code

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class MailSendClass {
    public static void main (String [] args){

      // Recipient's email ID needs to be mentioned.
      String to = "[email protected]";

      // Sender's email ID needs to be mentioned
      String from = "[email protected]";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try{
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("Thanks for registering on our website!");

         // Now set the actual message
         message.setText("Welcome To Job Portal !!!!  Again Thanks ");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }

    }
}

Et je reçois cette erreur à chaque fois

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
  nested exception is:
    java.net.ConnectException: Connection refused: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
    at javax.mail.Service.connect(Service.java:291)
    at javax.mail.Service.connect(Service.java:172)
    at javax.mail.Service.connect(Service.java:121)
    at javax.mail.Transport.send0(Transport.java:190)
    at javax.mail.Transport.send(Transport.java:120)
    at MailSendClass.main(MailSendClass.java:58)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    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)
    ... 7 more
BUILD SUCCESSFUL (total time: 3 seconds)

Je ne reçois pas l'erreur pourquoi cela se produit. Merci de m'aider à corriger cette erreur.

Author: ROMANIA_engineer, 2015-10-01

4 answers

L'erreur est auto-explicative: javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;

Vous n'avez pas de serveur SMTP sur localhost, mais vous le configurez là:

  // Assuming you are sending email from localhost
  String host = "localhost";
  ...
  // Setup mail server
  properties.setProperty("mail.smtp.host", host);

Vous devez donc:

  • soit configurez un serveur SMTP local comme relais sur votre système local (Postfix ou sendmail sont deux serveurs bien connus)
  • de configurer un serveur factice qui trace simplement la demande de courrier mais n'essaie même pas de livrer le courrier (Python est connu pour avoir de tels serveurs factices prêts à l'emploi)
  • ou configurer votre application avec un serveur, vous êtes autorisé à utiliser, contactez votre administrateur système dans un environnement d'entreprise, ou de votre fournisseur d'accès individuel. Quoi qu'il en soit, vous en aurez besoin même pour configurer un vrai relais.
 3
Author: Serge Ballesta, 2015-10-01 08:56:20

Vous devez utiliser le serveur SMTP gratuit de Google comme test.

mail.host=smtp.gmail.com
mail.username=//your gmail
mail.password=//your password
mail.defaultEncoding=UTF-8
mail.smtp.auth=true
mail.smtp.starttls.required=true
mail.smtp.starttls.enable=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.socketFactory.fallback=false
mail.smtp.port=465
mail.smtp.socketFactory.port=465

Ensuite, connectez-vous avec votre gmail et activez applications moins sécurisées .

 2
Author: QHuy, 2016-11-21 20:11:55

, Vous devriez regarder ces deux lignes:

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
Caused by: java.net.ConnectException: Connection refused: connect

L'erreur est: "Il n'y a rien à écouter sur localhost au port 25".

Vous essayez d'utiliser localhost:25 comme serveur de messagerie, mais il n'y a pas de serveur, il existe.

 1
Author: emiliollbb, 2015-10-01 08:26:03

Voici la solution de travail bro. c'est garanti

1) Tout d'abord, ouvrez votre compte gmail à partir duquel vous souhaitez envoyer du courrier, comme dans votre cas ""[email protected]"

2) ouvrez ce lien ci-dessous https://support.google.com/accounts/answer/6010255?hl=en

3) cliquez sur "Aller à la section "Applications moins sécurisées" dans Mon compte."option

4) Puis allumez-le

5) c'est tout (:

 1
Author: Zulfiqar Ali, 2015-11-17 13:53:37