Comundiad de foros web, escribo porque en verdad ya llevo un par de dias buscando dia y noche el motivo de mi problema y no lo logre solucionar.
El punto es que estoy programando un servlet el cual mande un correo a una cuenta especifica por medio del protocolo smtp a una cuenta de gmail.
Empeze por hacer una clase independiente con su metodo main para probarla y verificar que funcionara con las librerias activation.jar y mail.jar y todo funciono a la perfeccion, el mail llega sin ningun problema a la cuenta de gmail aqui el ejemplo:
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class EnviarMail
{
public static void main(String[] args)
{
try
{
// Conexion
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", "cuenta_correo");
props.setProperty("mail.smtp.auth", "true");
// Sesion
Session session = Session.getDefaultInstance(props);
// Construccion del msj
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("cuenta_correo"));
message.addRecipient(Message.RecipientType.TO,new InternetAddress("cuenta_correo"));
message.setSubject("Hola");
message.setText("Mensaje del correo");
// Envio
Transport t = session.getTransport("smtp");
t.connect("cuenta_correo", "pass");
t.sendMessage(message, message.getAllRecipients());
// Cierre.
t.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Este ejemplo lo hace todo bien y lo manda a la cuenta de correo especificada, pero al intentarlo hacerlo en un servlet, lo cargo y a la hora de mandar llamar a la clase desde el action form del jsp o html se queda en una pantalla en blanco, estuve buscando en que parte especifica era la que me mandaba a ese pantallazo en blanco y fue la linea en la que intenta conectarse:
t.connect("smtp.gmail.com", "cuenta_correo", "pass");
Aqui pongo todo el codigo del servlet y espero que alguien pueda ayudarme, de antemano muchas gracias.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class EnviarMail extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
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", "cuenta_correo");
props.setProperty("mail.smtp.auth", "true");
// sesión
Session session = Session.getDefaultInstance(props,null);
// Construcción del msj
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("cuenta_correo"));
message.addRecipient(Message.RecipientType.TO,new InternetAddress("cuenta_correo"));
message.setSubject("Hola");
message.setText("Mense del correo");
// Envio
Transport t = session.getTransport("smtp");
t.connect("smtp.gmail.com", "cuenta_correo", "pass");
t.sendMessage(message, message.getAllRecipients());
// Cierre.
t.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
P.D. Los recursos que estoy utilizando son tomcat 5.5, ubuntu 8.10, jdk 1.6