Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2009, 10:20
chavoyoguitar
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Exclamación Problema Servlet y SendMail

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