En muchos casos queremos enviar correos con nuestras apps y no tenemos ningún servidor de smtp disponible por lo que podemos usar alguna cuenta de Gmail como servidor de smtp.
Vamos a ver un paso a paso como crear una pequeña aplicación con java para enviar correos usando Gmail.
Primero vamos a crear un proyecto nuevo con Netbeans 11.0
Podemos crear el proyecto con Maven o sin Maven. La diferencia seria que al crearlo sin Maven tenemos que descargar un jar que vamos a necesitar e instalarlo. Con Maven lo podemos agregar usando la herramienta.
Yo lo voy hacer con Maven de esta manera
Damos clic en Next
Después nos va a salir la siguiente ventana donde le vamos a dar el nombre que deseamos al proyecto. En mi caso se llama JavaEmail.
Agregamos la clase Main para poder ejecutar nuestro proyecto.
Cuando ya tenemos todo esto listo vamos a agregar la dependencia de JavaMail
Damos clic derecho sobre el folder que dice dependencias con lo que nos aparecerá una ventana con opciones. Damos clic a Add Dependency.
En la siguiente ventana donde tenemos que buscar la librería vamos a agregar la siguiente
- Información. Group Id: javax.mail
- Artifact Id: Mail
- Version: 1.4
Damos clic en add y estamos listos para escribir nuestro código.
Antes de ir a escribir nuestro código debemos ir ingresar a la cuenta de correo que deseamos usar y dar clic al siguiente link https://myaccount.google.com/lesssecureapps que nos permite indicar a la cuenta de correo que va a ser usada por aplicaciones externas.
Damos clic al button que tenemos junto a “Allow les secure apps: Off” este debería cambia a on y ya con esto vamos a poder usar Gmail como nuestro servidor de correo.
Yo todo lo desarrolle en el main pero lo pueden hacer en cualquier clase.
Como vemos vamos importar las siguientes librerías para utilizar el correo.
Ahora tenemos que declarar algunas variables necesarias para poder ejecutar el envió del correo.
Algunos variables no van a cambiar como el puerto y el servidor de Gmail. Pero tenemos que agregar nuestra cuenta de correo en la variable userEmail y el password para esta cuenta en la variable userPassword. Por último, toPerson es a quien le queremos enviar el correo. Se podría enviar a múltiples cuentas si se desea.
Luego agregamos algunas propiedades necesarias para poder establecer la comunicación con el servidor
Ahora nos toca agregar el correo del destino, el cuerpo del email y el subject.
Tenemos que crear una variable de tipo session que nos va a permitir hacer la interacción con el servidor de correo electrónico.
Y ya finalmente crear el método que nos permite enviar el correo.
En el message que vamos a enviar agregamos el formato del texto que seria text/html junto con el cuerpo y el subject. Para que nos funcione en el método connect de Transport debemos agregar el servidor, cuanta de correo y la contraseña de nuestra cuenta de correo. Con esto podemos enviar el mensaje usando el método sendMessage de Transport.