Problème de connexion à un serveur SMTP

saskioutchiha_5955 Messages postés 5 Date d'inscription dimanche 22 mai 2022 Statut Membre Dernière intervention 16 mai 2024 - Modifié le 2 juil. 2024 à 16:46
mamiemando Messages postés 33267 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 septembre 2024 - 2 juil. 2024 à 16:56

Bonjour 

J'essay d'envoyer un email en java mais ça ne marche pas comme prévu. Voici mon code.

package application;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendMail {

        public static void main(String[] args) {
            

            Properties props = new Properties();
//          props.put("mail.smtp.user", "***@***");
            props.put("mail.smtp.debug", "true");
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.auth", "true"); // Enable authentication if needed
            props.put("mail.smtp.starttls.enable", "true"); // Enable TLS encryption
            props.setProperty("mail.smtp.ssl.trust","*");
            props.setProperty("mail.smtp.port", "25");
            // Get mail session
            Session session = Session.getInstance(props);

            try {
              // Create MimeMessage object
              MimeMessage email = new MimeMessage(session);

              // Set sender address
              email.setFrom(new InternetAddress("***@***"));

              // Set recipient address
              email.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse("***@***"));

              // Set subject
              email.setSubject("code verification");

              // Set message content (text/plain)
              email.setContent("this is you code " + Math.random()*100, "text/plain; charset=utf-8");

              // Send the email
              System.out.println("lllllll");
              Transport transport = session.getTransport("smtp");
              transport.connect("sandbox.smtp.mailtrap.io", "***@***", "mypassword"); // Connect to SMTP server
              transport.sendMessage(email, email.getAllRecipients()); // Send email
              transport.close();

              System.out.println("Email sent successfully!");

            } catch (MessagingException e) {
              e.printStackTrace();
            }
    }
}

Erreur :

javax.mail.MessagingException: Could not connect to SMTP host: smtp.mailtrap.io, port: 25;
  nested exception is:
    java.net.ConnectException: Connection timed out: 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:313)
    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 application.SendMail.main(SendMail.java:40)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.base/sun.nio.ch.Net.connect0(Native Method)
    at java.base/sun.nio.ch.Net.connect(Net.java:589)
    at java.base/sun.nio.ch.Net.connect(Net.java:578)
    at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:583)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
    at java.base/java.net.Socket.connect(Socket.java:751)
    at java.base/java.net.Socket.connect(Socket.java:686)
    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

Je peux envoyer un email en SMTP avec Python et JavaScript. J'ai testé cette implémentation avec Windows 10 et 11. J'au aussi ouvert le port 25 au niveau de mes systèmes d'exploitation et de mon fournisseur internet provider. J'ai aussi essayé le port 2525 mais le problème persiste. La seule différence que j'ai observée avec le port 25, c'est que cela met un peu de temps à être traité puis cela retourne une erreur. Merci 

Modération : merci de rédiger en français, ce forum étant francophone

A voir également:

2 réponses

yg_be Messages postés 23191 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 septembre 2024 Ambassadeur 1 533
17 mai 2024 à 07:15

bonjour,

quels messages d'erreur avec la porte 2525?

as-tu essayé avec telnet, comme expliqué: https://help.mailtrap.io/article/59-troubleshooting-email-testing#connection-errors

0
mamiemando Messages postés 33267 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 septembre 2024 7 777
Modifié le 13 sept. 2024 à 17:36

Bonjour,

Si tu parviens depuis la même machine à envoyer un mail en Javascript ou python, le problème ne peut pas être réseau (car le réseau n'a aucune idée de comment a été forgé un paquet), et donc le problème est purement lié à ton code (mauvais login/mot de passe, mauvaises instructions pour établir la connexion). Ce n'est donc pas un problème de pare feu.

Si on suppose que les login/mot de passe sont corrects, cela veut dire que la manière dont tu te connectes au serveur SMTP est mauvaise.

Du point de vue de la configuration SMTP Tu dois utiliser la même chose que ce que tu as utilisé dans ton script python/javascript : même port et  même technique d'authentification. Ces deux aspects dépendent du serveur SMTP. Généralement le port SMTP est d'ailleurs par convention plutôt 587 même si techniquement parlant, un serveur écoute sur le port de son choix.

On ne peut pas les connaître a priori, mais l'organisme qui met à disposition le serveur SMTP est sensé les indiquer clairement à ses usagers. Certains sites synthétisent ces spécifications (voir par exemple cette page). Indique-nous quel serveur SMTP tu utilises si tu veux plus de détails.

Bonne chance

0