web-dev-qa-db-fra.com

Impossible de se connecter à l'hôte SMTP: localhost, port: 25; L'exception imbriquée est la suivante: Java.net.ConnectException: connexion refusée: connect

Je suis en train de faire une demande d'envoi d'email depuis localhost dans jsp et j'ai trouvé une erreur comme Impossible de se connecter à l'hôte SMTP: localhost, port: 25; L'exception imbriquée est la suivante: Java.net.ConnectException: connexion refusée: connectez-vous plz et donnez-moi une solution ou une idée si vous avez .pour que j'utilise le code ci-dessous ..__ Vous remerciant à l'avance.

 <%@ page language="Java" import="javax.naming.*,Java.io.*,javax.mail.*,
javax.mail.internet.*,com.Sun.mail.smtp.*"%>

<html>
<head>
<title>Mail</title>
</head>

<body>

<%
try{
  Session mailSession = Session.getInstance(System.getProperties());

  Transport transport = new SMTPTransport(mailSession,new URLName("localhost"));

  transport.connect("localhost",25,null,null);


  MimeMessage m = new MimeMessage(mailSession);

  m.setFrom(new InternetAddress(%><%request.getParameter("from")%><%));

  Address[] toAddr = new InternetAddress[] {
              new InternetAddress(%><%request.getParameter("to")%><%)
            };
  m.setRecipients(javax.mail.Message.RecipientType.TO, toAddr );

  m.setSubject(%><%request.getParameter("subject")%><%);

  m.setSentDate(new Java.util.Date());

  m.setContent(%><%request.getParameter("description")%><%, "text/plain");

  transport.sendMessage(m,m.getAllRecipients());

  transport.close();

  out.println("Thanks for sending mail!");
}
catch(Exception e){

  out.println(e.getMessage());
  e.printStackTrace();
}
%>


</body>

</html>
7
amol

Vous devez d’abord vous assurer qu’un serveur SMTP écoute sur le port 25.

Pour savoir si vous avez le service, vous pouvez essayer d’utiliser le client TELNET, par exemple:

C:\> telnet localhost 25

(le client telnet est désactivé par défaut sur les versions les plus récentes de Windows, vous devez ajouter/activer le composant Windows à partir du Panneau de configuration. Sous Linux/UNIX, le client telnet est généralement présent par défaut.

$ telnet localhost 25

Si le délai d'attente est long, cela signifie que vous ne disposez pas du service SMTP requis. Si la connexion est établie avec succès, vous saisissez quelque chose et pouvez saisir quelque chose, le service est là.

Si vous ne disposez pas du service, vous pouvez utiliser ceux-ci:

  • Un serveur SMTP factice qui imitera le comportement du serveur SMTP réel, car vous utilisez Java, il est naturel de suggérer Dumbster faux serveur SMTP. Cela peut même fonctionner dans les tests JUnit (avec configuration/démontage/validation) ou être exécuté indépendamment en tant que processus séparé pour le test d'intégration.
  • Si votre hôte est Windows, vous pouvez essayer d’installer Mercury email server (livré avec le paquet WAMPP d’Apache Friends) sur votre local avant d’exécuter le code ci-dessus. 
  • Si votre hôte est Linux ou UNIX, essayez d'activer le service de messagerie tel que Postfix ,
  • Un autre serveur SMTP complet en Java, tel que Apache James mail server.

Si vous êtes sûr de disposer déjà du service, il se peut que SMTP nécessite des informations d'identification de sécurité supplémentaires .. Si vous pouvez me dire quel serveur SMTP écoute sur le port 25, je pourrais peut-être vous en dire plus.

13
Daniel Baktiar

Le serveur de messagerie sur CentOS 6 et d'autres plates-formes de serveurs compatibles IPv6 peut être lié à IPv6 localhost (:: 1) au lieu de IPv4 localhost (127.0.0.1).

Symptômes typiques:

[root@Host /]# telnet 127.0.0.1 25
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

[root@Host /]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 Host ESMTP Exim 4.72 Wed, 14 Aug 2013 17:02:52 +0100

[root@Host /]# netstat -plant | grep 25
tcp        0      0 :::25                       :::*                        LISTEN      1082/exim           

Si cela se produit, assurez-vous que vous n'avez pas deux entrées pour localhost dans /etc/hosts avec des adresses IP différentes, comme dans l'exemple (incorrect):

[root@Host /]# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost localhost4.localdomain4 localhost4
::1       localhost localhost.localdomain localhost6 localhost6.localdomain6

Pour éviter toute confusion, assurez-vous de n'avoir qu'une seule entrée pour localhost, de préférence une adresse IPv4, comme ceci:

[root@Host /]# cat /etc/hosts
127.0.0.1 localhost  localhost.localdomain   localhost4.localdomain4 localhost4
::1       localhost6 localhost6.localdomain6
1
qris