Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Envío de mesajes de correo electrónico mediante librerías JavaMail


Método para el envío de un mesanje de correo electrónico a través de JSP.


08/11/05 - JavaMail es una API que se puede descargar libremente del sitio de la Sun http://java.sun.com/products/javamail/.
Esta muy bien documentada y provee todas las clases necesarias para gestionar servicios de corre electrónico.
En este caso haremos una clase simple para el envió de mensajes. Luego veremos la implementación dentro de una pagina jsp.

Comenzamos entonces por escribir el código de la clase, para luego explicarla en detalle:

package notas;

import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.InternetAddress;

/**
* <p>Title: MailSender</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author Fernando Arturi
* @version 1.0
*/

public class MailSender {

    public MailSender() {
   }
   public static boolean send(String hostSmtp, String senderAddress, String toAddress,
       String ccAddress, String bccAddress, String subject,
       boolean isHTMLFormat, StringBuffer body, boolean debug){

   MimeMultipart multipart = new MimeMultipart();

   Properties properties = new Properties();

    properties.put("mail.smtp.host", hostSmtp);
   Session session = Session.getDefaultInstance(properties, null);
   session.setDebug(debug);
   try {
      MimeMessage msg = new MimeMessage(session);
      msg.setFrom(new InternetAddress(senderAddress));
      msg.setRecipients(Message.RecipientType.TO, toAddress);
      msg.setRecipients(Message.RecipientType.CC, ccAddress);
      msg.setRecipients(Message.RecipientType.BCC, bccAddress);
      msg.setSubject(subject);
      msg.setSentDate(new Date());

      // BODY
      MimeBodyPart mbp = new MimeBodyPart();
      if(isHTMLFormat){
         mbp.setContent(body.toString(), "text/html");
      }
      else{
         mbp.setText(body.toString());
      }

      multipart.addBodyPart(mbp);

      msg.setContent(multipart);
      Transport.send(msg);
   }
   catch (Exception mex){
      System.out.println(">> MailSender.send() error = "+mex );
      return false;
   }
   return true;
  }

}


1) Comenzamos por definir un package, es decir un grupo de clases, aunque en este caso será solamente una. Después importamos todas las clases que nos sirven, es importante agregar las librerias JavaMail ya sea al entorno de desarrollo como a nuestro sitio jsp (carpeta \WEB-INF\lib).

package notas;

import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.InternetAddress;

2) Denominamos la clase MailSender, y creamos un constructor que, en este caso, no hace nada. Todas las variables que nos sirven las utilizaremos directamente en la función send.

public class MailSender {

   public MailSender() {

  }


3) Definimos la función estática send que, a través de los parámetros recibidos, permite de enviar el mensaje. Dichos parámetros son:
hostSmtp : Servidor de correo en salida (smtp).
senderAddress: la dirección de correo de la persona que envía el mensaje.
toAddress : la dirección de correo de la persona que recibirá el mensaje.
ccAddress : la dirección de correo de la persona que recibirá el mensaje en copia.
bccAddress: la dirección de correo de la persona que recibirá el mensaje en copia oculta.
subject : Titulo del mensaje.
isHTMLFormat : variable booleana que indica si el mensaje es con formato HTML o texto simple.
body = cuerpo del mensaje.
debug = variable booleana que indica a la API si debe hacer el "debugging", es decir, una serie de mensajes detallando cada paso que se ejecuta. Esta variable seguramente será igual a true durante los primeros usos de la clase, luego no tiene mucho sentido dejarla activa.

public static boolean send(String hostSmtp, String senderAddress,
String toAddress, String ccAddress, String bccAddress,
String subject, boolean isHTMLFormat, StringBuffer body,
boolean debug){


4) Comienza la ejecución de la función. Instanciamos los objetos MimeMultipart y Properties y Session, y luego se ejecutan los comandos correspondientes.

MimeMultipart multipart = new MimeMultipart();
Properties properties = new Properties();
properties.put("mail.smtp.host", hostSmtp);
Session session = Session.getDefaultInstance(properties, null);
session.setDebug(debug);


5) Inicializo el mensaje y le asigno las variables que necesita.

try {
    MimeMessage msg = new MimeMessage(session);
    msg.setFrom(new InternetAddress(senderAddress));
    msg.setRecipients(Message.RecipientType.TO, toAddress);
    msg.setRecipients(Message.RecipientType.CC, ccAddress);
    msg.setRecipients(Message.RecipientType.BCC, bccAddress);
   msg.setSubject(subject);
   msg.setSentDate(new Date());

6) Procesamos el cuerpo del mensaje (MimeBodyPart). Notar que, dependiendo el tipo de mensaje, debo usar las funciones setText o setContent. Luego se inserta la variable mbp al mensaje.

// BODY
MimeBodyPart mbp = new MimeBodyPart();
if(isHTMLFormat){
    mbp.setContent(body.toString(), "text/html");
}
else{
    mbp.setText(body.toString());
}

multipart.addBodyPart(mbp);
msg.setContent(multipart);


7) Envío del mensaje.

Transport.send(msg);

Si el método se ejecuta satisfactoriamente, la clase retornara true. Caso contrario, se ejecutara el bloque catch, que imprime un mensaje por la consola indicando el tipo de error, y luego retorna false.

catch (Exception mex){
   System.out.println(">> MailSender.send() error = "+mex );
   return false;
}

return true;

8) Finalmente, una pagina jsp para probar la clase:

<%@ page language="java" %>
<%@ page import = "notas.MailSender"%>
<%
MailSender ms = new MailSender();

boolean result = ms.send("smtp.zzz.com.ar","yo@midominio.com",
"tu@midominio.com","cc@midominio.com", "bcc@midominio.com" ,
"mail de prueba", false, new StringBuffer("hola"),true);

out.print("Resultado del envío del mensaje : " + result);
%>

Al final, imprime por pantalla el resultado (true o false) del envío del mensaje.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 3 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Fernando Arturi*
URL: http://www.arturi.com.ar

Atención: Copyright. Este artículo no se puede reproducir sin la autorización expresa del autor.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Ayudas técnicas

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en JSP


 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 3 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Ayudas técnicas
Categorías
+JSP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia