Java and the Duke logo are trademarks of Sun Microsystems, Inc.
JavaMail en 5 minutos PDF Imprimir E-Mail
Escrito por Martin Cabrera   
miércoles, 18 de abril de 2007

Introducción

Es común el problema de enviar uno o varios mail desde una aplicación Java (SE o EE). Ejemplos de estos pueden ser que nuestro sistema tenga manejo de alarmas, notificaciones especiales, promociones u otras.

Este pequeño apartado muestra como utilizar el paquete javax.mail desde una aplicación JEE. Este paquete es parte de la especificación J2EE, no viene con J2SE.

Antes de comenzar se necesitaría bajar la biblioteca .jar que contiene el javamail. La url de acceso es: http://java.sun.com/products/javamail/index.html
Luego se debe colocar la biblioteca en el classpath de la aplicación Web a desarrollar.

El jar "mail.jar" tiene diversas funcionalidades, aparte de enviar e-mail. Si quieren ver todos los servicios que ofrece acceder a: http://java.sun.com/j2ee/sdk_1.3/techdocs/api/

 

Ejemplo básico

Primero necesitamos definir un conjunto de propiedades que la librería utilizará para enviar los mail. Esta información puede ser el servidor SMTP entre otras.

Properties p = new Properties();
p.put("mail.host", "smtp.juguy.org");


 

Este esquema permiten definir distintas propiedades a diferentes sesiones de mail. Modificando estas propiedades modifico el envío de mail sin necesidad de tocar la API o clases generadas. Un manejo un poco mas sofisticado es levantar estas propiedades de un archivo .properties o similar.

En este momento es necesario crear la sesión con las propiedades indicadas.

Session session = Session.getInstance(p, null);
MimeMessage msg = new MimeMessage(session);


 

El segundo argumento del metodo que genera la sesión es "null". Esto se debe a que el servidor smtp no precisa autentificación para enviar mail. En caso de que no se así debemos pasar un argumento del tipo java.mail.Authenticator.

Una vez que generamos la sesión, creamos un mensaje a enviar. Como argumento de entrada tiene la sesión que generamos anteriormente. Ahora deberíamos asociar los parámetros del mensaje y por último enviarlo.

 try {
     // "de" y "para"
     msg.setFrom(new InternetAddress(" Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla "));
     msg.setRecipient(Message.RecipientType.TO, new InternetAddress(" Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla "));
 
     // fecha de envío
     msg.setSentDate(new Date());
 
     msg.setSubject("informacion al grupo ");
 
     msg.setText("body del mensaje ");
 
     // intento enviar el mensaje
     Transport.send(msg);
 }
 catch (AddressException e) {
     // error al enviar
 }
 catch (MessagingException e) {
     // error al enviar
 }


 

 

 

 

 

 

 

 

 

 

 

 

 

Como se puede ver con pocas líneas de código puedo enviar un mail. El "from" y "Recipient" utilizan la clase javax.mail.internet.InternetAddress.

Si escribo mal la dirección del e-mail de destino se lanza una excepción noficiando el error del envío.

Conclusión

Este apartado muestra el ejemplo más simple de javamail, existen componentes de internacionalización, encodings, mensajes con adjuntos, u otros detalles de envío complejo. Si se quiere hacer referencia a algunos de ellos consultar la API antes mencionada de javamail.

Un comentario final sobre el envío de mail ... ojo con el SPAM. si enviamos muchos correos de notificación desde direcciones de nuestra empresa, corremos grave peligro de quedar en alguna "black list" o filtro de spam ... OJO !

Suerte con el envío de mail, cualquier consulta que tengan envíen mail a: Esta dirección de correo electrónico está protegida contra los robots de spam, necesita tener Javascript activado para poder verla

Saludos a todos, Martin

Comentarios
Ańadir nuevoBuscarRSS
ˇSólo los usuarios registrados pueden escribir comentarios!
Modificado el ( viernes, 20 de abril de 2007 )
 
Siguiente >

Ingresar






¿Recuperar clave?
¿Quiere registrarse? Regístrese aquí

Usuarios conectados

Hay 2 invitados en línea

Cuestionario

¿Que tema elegirías para tratar en el próximo evento del jug?
 

Syndicate

joomla templates by dezinedepot
© 2008 Juguy - Grupo de Usuarios Java del Uruguay
Joomla! es Software Libre distribuido bajo licencia GNU/GPL.