Problemas JAVAMAIL

Estoy empezando a trabajar con javamail pero no tengo éxito. Mi código es el siguiente:
           Properties props = new Properties();
            props.put("mail.smtp.host", "smtp.mail.yahoo.com");
            Session s = Session.getInstance (props);
            MimeMessage message = new MimeMessage(s);
            InternetAddress from = new InternetAddress("[email protected]");
            message.setFrom(from);
            InternetAddress to = new InternetAddress(request.getParameter("to"));
            message.addRecipient(Message.RecipientType.TO, to);
            message.setSubject(request.getParameter("subject"));
            message.setText(request.getParameter("text"));
            Store store = s.getStore("pop3");
            store.connect("pop.mail.yahoo.com", "yahooUser", "Password");
            Transport.send(message);
            store.close();
y el error que me da tomcat:
<pre>org.apache.jasper.JasperException: An exception occurred processing JSP page /Email/SendDynamicMail.jsp at line 43
40: Store store = s.getStore("pop3");
41: store.connect("pop.mail.yahoo.com", "yahooUser", "Password");
42:
43: Transport.send(message);
44:
45: store.close();
46:
Que hay mal en el codigo?</pre>
He probado con usuario y contraseña incorrectas y lo detecta con lo que la cuelta es valida. He leído que usa el puerto 25 para stmp y que depende del sistema operativo hay que cambiarlo. Yo usa mac y no se si ese sera el error. En tal caso, ¿alguien sabe como se cambia?

1 Respuesta

Respuesta
1
¿Has mirado a ver si tienes salida hacia internet por los puertos 25 y 110? Si lo que quieres hacer es enviar un mensaje hacia afuera deberías probar sin las dos líneas del Store. Nunca he probado a conectarme al servidor de smtp de Yahoo! De forma directa, a lo mejor no puedes, porque se suele capar lo que se llama el acceso por relay.
Buenas,
probé usando otros puertos pero no se mirar si tienen salida a interner per al final lo he conseguido con otro ejemplo para gmail y usando otro puerto.
Tienes razón, si solo quiero mandar no me hace falta usar store.
Pongo el código por si le vale a alguien.
try{//conexión
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.port", "587");
props.setProperty("mail.smtp.user", "[email protected]");
props.setProperty("mail.smtp.auth", "true");
//session
Session s = Session.getDefaultInstance(props);
//message
MimeMessage message = new MimeMessage(s);
message.setFrom(new InternetAddress("[email protected]"));
message.addRecipient( Message.RecipientType.TO,new InternetAddress(request.getParameter("to")));
message.setSubject(request.getParameter("subject"));
message.setText(request.getParameter("text"));
//send
Transport t = s.getTransport("smtp");
t.connect("[email protected]", "contraseña");
t.sendMessage(message, message.getAllRecipients());
//close
t.close();
}catch (Exception e){
e.printStackTrace();
}
Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas