En este artículo es el
complemento del JavaMail para enviar correo Gmail que publique
en (este Enlace), en este nuevo post explicare como configurar el JavaMail Session con
Glassfish Version 4.1, que permitirá definir las propiedades en la consola del
servidor y de esta manera las aplicaciones solo deben consumirla, en Java EE 7,
se puede recuperar una sesión de JavaMail, configurada con el servidor de
aplicación por medio de la anotación @Resource.
Esta anotación está disponible sobre el
paquete Javax.annotation.
Mencionare algunas anotación utilizadas
para la inyección de dependencia como son @EJB, @PersistenceContext,
PersistenceUnit @Inject, @WebServiceRef, @Resource.
Como primero es ejecutar el servidor de
aplicaciones, se pueden hacer en dos diferentes pasos, el primero sea por línea
de comando por medio de la consola y el segundo por medio del IDE en este caso
que estamos utilizando Netbeans 8.2.
Primer paso por medio de consola se ejecuta
la siguiente línea de comando: asadmin
start-domain domain1.
El segundo paso en el IDE
nos dirijimos a la pestaña de services=>server=>GlassFish 4.1=>clik derecho=>start
Verificamos
si el Servidor está en Ejecución.
Suponiendo que el
servidor GlassFish se está ejecutando en modo de prueba en el equipo local en
el puerto 8080, se puede comprobar que se encuentra en ejecución en el
explorador a http://localhost:4848 como se muestra en la (figura 1)
Figura 1 Consola de GlassFish
En el siguiente paso
vamos a crear nuestro JavaMail Sessions y configurarlo => resources=> JavaMail Sessions => New
como se muestra en la (figura 2)
Figura 2 Configuración JavaMail Sessions
Después de presionar New diligenciamos los
siguientes campos como lo muestra la tabla 1, 2 y como la (figura 3)
CAMPOS
|
DATOS
|
JNDI Name:
|
Email
|
Mail Host:
|
smtp.gmail.com
|
Default User:
|
|
Default Sender Address:
|
|
Status:
|
seleccionamos la opción
Enable
|
Tabla 1
Los
demás campos se dejan por defectos:
Store Protocol:
|
imap
|
Store Protocol Class:
|
com.sun.mail.imap.IMAPStore
|
Transport Protocol:
|
smtp
|
Transport Protocol
Class:
|
com.sun.mail.smtp.SMTPTransport
|
Tabla 2
Figura
3 Nuevo JavaMail Sessions
A continuación agregamos cuatro (4) propiedades
para la configuración del JavaMailSession como se describe en la tabla 3 y como
se muestra en la (figura 4).
NOMBRE
|
VALOR
|
mail.smtp.auth:
|
True
|
mail.smtp.starttls.enable:
|
True
|
mail.smtp.starttls.port:
|
587
|
mail.smtp.starttls.password:
|
“Su
password”
|
Tabla 3
Figura
4 Agregando Propiedades
Después de configurar el JavaMail Session
continuaremos en crear la clase MailBeans como se muestra en la (figura 5 y 6)
Figura
5 Nueva clase
Figura 6 Nombre y ubicación de la clase
En la parte superior de
la clase declaramos las siguientes anotaciones @ManagedBean
y @RequestScoped, para lo que no están
familiarizado con la inyección de dependencias (CDI), esta explicado
detalladamente en el artículo anterior que lo puedes encontrar aquí.
Se inyecta la sesión completa JavaMail como
recurso en vez de crearlo en otras palabras se configurar el JavaMail Session
en la clase MailBeans usando la anotación @Resource.
Después declaramos tres (3) variables que se describirán en
la siguiente Tabla 4, en el siguiente paso crearemos una nueva instancia de MailBeans como se muestra en la (Figura
7).
NOMBRE
DE LA VARIABLE
|
DESCRIPCIÓN
|
From
|
Para quien será remitido
el correo
|
Subject
|
El asunto o motivo del
correo
|
Descr
|
La descripción del correo
electrónico
|
Tabla 4 Descripción de las variables
Figura 7 Declaraciones de variables
Después de tener las
variables declaradas privada, generamos los métodos de acceso “get y set” para cada una de las variables que conformaran los componentes
de la web. Crearemos dos (2) métodos ValidateEmail() y submitemail() que se
encargara de validar las direcciones de emails en los campos To, como se
muestra en la (Figura 8) que son enviados por el usuario en aplicaciones web.
Figura
8 Validación de Email
El Segundo método
submitEmail se va encargar de enviar los emails, como se muestra en la (figura
9).
Figura
9 Método Enviar email
Ahora crearemos la página JSF =>new file=>web=>JSF con extensión
XHTML como se muestra en la (figura 10).
Figura 10 Creación de página web JSF
Agregamos la siguiente codificación
como se muestra en la (figura 11)
Figura
11 Codificación de la página web JSF
Por ultimo ejecutamos la aplicación y se mostrara como en la (figura 12)
Figura 12 Pagina JSF
Descarga del Proyecto
Buenas noches me sale correo no enviado y ya configure tal cual el blog, me podria ayudar por favor
ResponderBorrarDescarga el ejemplo https://github.com/Geovanny0401/emailglassfish.git
Borrarel correo de gmail debes crearlo o utilizar el personal para realizar la respectiva prueba
Configure todo tal cual el blog y capture este error que me sale " Couldn't connect to host, port: localhost, 25; timeout -1"
ResponderBorrartengo el mismo problema, al parecer en el resource no se esta encontrando el JNDI configurado en el glashfish, por lo que el objeto session se esta mandando null, mi duda es si se debe configurar un bean con los datos del JDNi.
BorrarSaludos!