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.
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.
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 .
, 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.
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 (: