javax.courrier.MessagingException: Impossible de se connecter à l'hôte SMTP?


Voici mon code pour envoyer du courrier:

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMail {
    public void sendMail(String m_from,String m_to,String m_subject,String m_body){
      try {
            Session m_Session;
            Message m_simpleMessage;
            InternetAddress m_fromAddress;
            InternetAddress m_toAddress;
            Properties m_properties;

            m_properties     = new Properties();
            m_properties.put("mail.smtp.host", "usdc2spam2.slingmedia.com"); 
            m_properties.put("mail.smtp.socketFactory.port", "465");
            m_properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
            m_properties.put("mail.smtp.auth", "true");
            m_properties.put("mail.smtp.port", "9000");

            m_Session=Session.getDefaultInstance(m_properties,new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("aaaaa","bbbbb@1"); // username and the password
                }
            });

            m_simpleMessage  =   new MimeMessage(m_Session);
            m_fromAddress    =   new InternetAddress(m_from);
            m_toAddress      =   new InternetAddress(m_to);

            m_simpleMessage.setFrom(m_fromAddress);
            m_simpleMessage.setRecipient(RecipientType.TO, m_toAddress);
            m_simpleMessage.setSubject(m_subject);

            m_simpleMessage.setContent(m_body, "text/html");

            //m_simpleMessage.setContent(m_body,"text/plain");

            Transport.send(m_simpleMessage);
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
    }
    public static void main(String[] args) {
      SendMail send_mail    =   new SendMail();
      String empName = "xxxxx";
      String title ="<b>Hi !"+empName+"</b>";
      send_mail.sendMail("[email protected]", "[email protected]", "Please apply for leave for the following dates", title+"<br>by<br><b>HR<b>");
    }
}

Mais quand j'exécute le code, cela me donne l'exception suivante.

javax.mail.MessagingException: Could not connect to SMTP host: usdc2spam2.slingmedia.com, port: 9000;
  nested exception is:
    java.net.ConnectException: Connection refused: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
    at javax.mail.Service.connect(Service.java:317)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)
    at samples.SendMail.sendMail(SendMail.java:46)
    at samples.SendMail.main(SendMail.java:55)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)

Quand je ping ce usdc2spam2.slingmedia.com, il me donne une réponse sans aucun problème. J'utilise windows 7

Aidez-moi à résoudre ce problème.

Author: SAR, 2012-06-14

4 answers

Ce sont ces deux lignes qui me posaient le problème:

m_properties.put("mail.smtp.socketFactory.port", "465");
  m_properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");

Et ajouté cette ligne:

m_properties.put("mail.smtp.starttls.enable", "true");

Après avoir supprimé et ajouté les lignes de code ci-dessus, cela a bien fonctionné.

 5
Author: SAR, 2012-06-14 12:11:11

Ce qui cause votre problème est juste là dans la trace de la pile:

java.net.ConnectException: Connection refused: connect

Avez-vous besoin d'un mot de passe pour vous connecter au serveur SMTP? Êtes-vous sûr d'utiliser les bons paramètres (comme dans le numéro de port)? Vous êtes derrière un proxy ou un pare-feu? Pouvez-vous utiliser ces paramètres dans un programme de messagerie ordinaire (par exemple Thunderbird) et envoyer des mails?

 2
Author: posdef, 2012-06-14 08:41:40

Cette exception se produit généralement lorsqu'aucun service n'écoute sur le port auquel vous essayez de vous connecter.

Essayez de vous connecter en utilisant putty ou telnet. Je peux parier que vous obtiendrez la même erreur.

Vérifiez ces choses:

  • Nom d'hôte et port auquel vous essayez de vous connecter,
  • Le serveur écoute correctement, et
  • Aucun pare-feu ne bloque la connexion.
 2
Author: Hardik Mishra, 2012-06-14 11:37:48

Essayez d'ajouter le port 9000 à vos règles entrantes dans votre pare-feu Windows.

 2
Author: Warner, 2012-06-14 13:00:49