Envio de mail mediante Java. Java mail

. jueves, 10 de febrero de 2011
  • Agregar a Technorati
  • Agregar a Del.icio.us
  • Agregar a DiggIt!
  • Agregar a Yahoo!
  • Agregar a Google
  • Agregar a Meneame
  • Agregar a Furl
  • Agregar a Reddit
  • Agregar a Magnolia
  • Agregar a Blinklist
  • Agregar a Blogmarks

Es posible que se nos plantee la necesidad de enviar mensajes de correo electrónico desde una aplicación java. Se nos pueden presentar varias dudas a la hora de programar estos envíos de correo electrónicos.

El API JavaMail es una extensión estandar para leer, componer y enviar mensajes electrónicos. Usamos este paquete para crear componentes tipo Mail User Agent (MUA), similares a Outlook. Su objetivo principal no es el de enviar, transportar o recibir estos mensajes, como prodría hacer Sendmail o James. Java mail esta diseñado para enviar y recibir mensajes de correo electrónico.

Protocolos.
Para llevar a cabo el envío de mensajes de correo electrónico se sirve de varios protocolos, tales como SMTP, POP o IMAP. Estos se situan en la capa de aplicación de la pila de protocolos OSI. Estos protocolos no son objetivo de esta entrada, por lo que no se va a profundizar en ellos. Simplemente aclarar que el protocolo SMTP es el protocolo utilizado para enviar mail, y bien los protocolos POP o IMAP son los protocolos de los que nos servimos para descargar los mesajes de correo electrónico que se encuentran en nuestro servidor de correo.

Plataforma de desarrollo Java Mail
Javamail permite el envío y la recepción de mensajes de correo electrónico y nos provee de clases esenciales para realizar estas tareas.



  • Session
Define las propiedades por usuario y globales que definen la interface comunicación entre el cliente de correo electrónico y la red. Esta clase actua como factoría de objetos Tranport y Store, que se ocupan de los protocolos de acceso y transporte. Es decir la clase Session administra las opciones de configuración, autentificación e interación con el sistema de mensajería. En el siguiente código se muestra como se utiliza

Properties p = System.getPtoperties(); p.put("mail.smtp.host", host); p.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(p,null);


  • Message
Message es una clase abstracta que define una colección de atributos y contenidos de un mensaje de correo electrónico tales como el destinatario, el emisor la dirección... Además se encarga de crear un mensaje de correo electrónico. El api de JavaMail contiene la clase MimeMessage.


MimeMessage m = new MimeMessage(session)
try{
m.setFrom();
m.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
m.setSubject(asunto);

Multipart mmp = new MimeMultipart();

BodyPart bp = new BodyPart();

bp.setContent(texto,"text/plain");
mmp.addBodyPart(bp);
m.setContent(mmp);

Flag fs = m.getFlags


}
catch(Exception e){
e.printStrackTrace();
}



  • Store
La clase Store define una base de datos para almacenar los objetos Folder, especifica el protocolo de acceso con el que acceder a los mensajes, además permite almacenar mensajes en en la carpeta del servidor y cierre de sessiones.

Es posible crear un objeto Store en tres lineas:

Store store = null;
try{
store = session.getStore("pop3");
store.connect(hostEntrante, usuario, password);

}
catch(Exception e){
e.printStrackTrace();
}






  • Folder
Representa una carpeta que contiene uno o más mensajes de correo, aunque tambien es posible que contenga alguna subcarpeta.


Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
if(folder.isOpen())System.out,println("Folder abierto");



  • Address
Addres es una clase abstrabta que modela una direccion de IP o bien URL, esta clase comprueba la dirección a la que enviamos el correo ó la dirección del remitente es correcta (en caso de que no sea correcta lanza una excepción)


Como mandar un mensaje de correo electrónico



try{
Transport t = session.getTransport("smtp");
t.connect(host,usuario,password);

if(m == null)return;


t.sendMessage(m,m.getAllRecipients());
t.close();

}
catch(javax.mail.MessagingException e){
e.printStrackTrace();
}





0 comentarios:

Invitame a un cafe !!!

Si te gusto este blog colabora...