domingo, 10 de agosto de 2014

Mandar email desde java


Necesitamos JSF y  JavaMail

El árbol de proyecto es el siguiente:

Para crear el proyecto, puede seguir los siguientes pasos u obtener  el proyecto ya realizado (al final de este blog).


  1. Creamos un nuevo proyecto (java) con el nombre correo.
  2. En la carpeta "SourcePackages" agregamos un nuevo archivo de propiedades, llamado datos.





  1. Agregamos las claves fundamentales para JavaMail (líneas 4-8) y otras claves que utilizaremos (líneas 10-12)

NOTA: el correo debe ser uno existente de gmail 
y la contraseña (línea 12) real del correo especificado

  1. Ahora creamos el paquete util, y dentro del mismo la clase EnviarMail que tendrá toda la lógica para el envío de correo utilizando JavaMail.


  1. Debemos contar con el jar de JavaMail (mail.jar) para importar algunas clases a utilizar




  2. Definimos un método que recibirá tres parámetros


  3. Encerrando las sentencias en el bloque try-catch, iniciamos leyendo el archivo de propiedades y creando una composición de Session asignando un objecto de sesión predeterminado (getDefaultInstancecon las propiedades (claves) y valores del archivo de propiedades llamado datos.


  4. Para crear el mensaje, será a través de una instancia de objeto MimeMessage y luego le establecemos los atributos y contenidos apropiados setFrom, setSubject, setText, addRecipient, etc.


  5. De la imagen siguiente,  línea 42 se establece el remitente del correo: setFrom
  6. Línea 44, se establece el asunto del mensaje (correo): setSubject
    Línea 45, se establece el mensaje como tal especificando la codificación a utilizar y el subtipo MIME
    prop.getProperty("clave") recupera el valor de la clave indicada en el archivo de propiedades llamado datos

    De la imagen anterior, en la línea 43 se declara el destinatario del correo (éste debe existir y puede ser de gmail. hotmail, yahoo, etc.), se puede incluir con copia a otro destinatario y con copia oculta



    De la imagen siguiente, en línea 49 se establece un protocolo para la transferencia simple de correo electrónico
    Línea 50, nos autenticamos con el usuario (correo) y contraseña válidos en el host especificado (en este caso smtp.gmail.com: clave mail.smtp.host del archivo de propiedades)
    Una vez autenticados, mandamos el mensaje sendMessage

    Casí para finalizar, cerramos el servicio: t.close();
    Línea 55 cerramos try y añadimos dos catch específicos: si hay error en el envío del mensaje y si hay algún problema en la entrada/sálida de datos al cargar el archivo de propiedades.


    Ahora utilizaremos este método desde una "Java Main Class"



    Descargar ejemplo
    Antes de probar el proyecto de ejemplo, debe establecer su correo y contraseña de gmail en el archivo de propiedades (en las claves mail.smtp.user y utez.gmail.pass).

    Queda como creatividad que el método enviar retorne un "booleano" para informar si se envío o no el correo, validar que las direcciones de correo cumplan con el formato de correo, y agrear una interfaz gráfica con swing o web por ejemplo.

    No hay comentarios.:

    Publicar un comentario