Que tal,yo se que este problema sea bastante común ya que he visto en distintos foros el mismo problema pero creo que el
mio es un poco distinto. Durante un tiempo eh estado trabajando con la librería de javamail para el envío de correos y todo
me habia salido bien hasta hace unas semanas, resulta que en mi trabajo estoy desarrollando una aplicación basada en java
con el framework de struts 2 y jsp's, mi problema surgió al intentar enviar correos dentro de la red de la empresa ya que
me manda el siguiente error: java.net.SocketException: Permission denied: connect.
He estado buscando alguna solución en muchisimos foros, incluso en inglés y no he podido solucionar este problema. Pregunté
al administrador de la red que si tenía algún firewall en ese puerto el cual me esté bloqueando el acceso pero me dijo que
no tienen configurado ninguno. También me dijo que solo usan ipv4. Comprobé que el puerto no este deshabilitado mediante un
ping al smtp de la compañia y efectivamente tengo respuesta por lo que el servicio si está activo. Estoy usando java 1.7 y
por lo que leí esa versión tiene algunos problemas con la libreria de javamail por lo que instalé la versión 1.6 y aún asi
tengo el mismo problema. Incluso agregué el siguiente código (-Djava.net.preferIPv4Stack=true) a la vm de netbeans pero
sigo sin tener una respuesta favorable, lo curioso es que hice un nuevo proyecto de consola (los que solo aparecen la taza
de café) en netbeans con el mismo código, agregué la misma línea de código (-Djava.net.preferIPv4Stack=true) y sí me dejó
enviar el correo, pero al crear el archivo .jar del proyecto (usando clean and built) y ejecutandolo desde cmd me vuelve a
marcar el mismo error y no envía el correo.
Otra prueba que hice fué llevarme el proyecto a mi casa y ejecutarlo conectado a mi red y efectivamente me deja enviar el
correo, asi que supongo que el problema está en alguna configuración de la empresa y no en el código pero la verdad no
tengo la menor idea de que pueda ser. Les dejo el código que estoy utilizando y espero que alguien me pueda ayudar a dar
solución a este problema.
Cabe mencionar que la dirección de correo del cual estoy enviando los correos no requiere autenticación:
Código:
public class Correo extends ActionSupport { private String De; private String Para; private String Mensaje; private String Asunto; @Override public String execute() { try { String from = "[email protected]"; String to = "[email protected]"; String smtpHost = "smtp.xxxxx.com"; Properties props = System.getProperties(); props.put("mail.smtp.host", smtpHost); Session sesion = Session.getDefaultInstance(props); sesion.setDebug(true); MimeMessage message = new MimeMessage(sesion); message.setSubject("MENSAJE"); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setText("Texto del mensaje"); Transport.send(message); return SUCCESS; } catch (MessagingException e) { System.out.println(e); return ERROR; } } }