Envía Email desde Java versión 2.0
Bienvenid@ lector/a, en esta nueva entrada veremos cómo crear
un programa que envié correos desde una cuenta Gmail o Hotmail (Outlook),
este programa será una versión modificada de una ya realizada, para ver la
versión 1.0 Dirigirse al siguiente LINK.
Cabe recalcar que la versión 1.0 de este programa consta de las
siguientes funcionalidades.
- Envía correo a cualquier destinatario desde un correo Host GMAIL.
- Se envía correo a un solo destinatario sin copia a otro contacto o copia oculta.
- El correo solo es de texto sin adjuntos.
Ahora la versión 2.0 constara de funcionalidades un poco más
pulidas agregando más funcionalidades para que sea más funcional. Esta versión
modificada tendrá las siguientes funcionalidades.
- El origen del correo puede ser desde el Host de GMAIL y HOTMAIL (Outlook).
- Múltiples destinatario.
- Múltiples destinatarios con Copia y Copia Oculta.
- Múltiples adjuntos.
- El cuerpo del correo puede contener Imágenes y texto.
Librerías:
Empezaremos con la interfaz gráfica de la aplicación que
varía un poco con la vista en la versión original, esta nueva interfaz tiene
como objetivo que sea más intuitiva y sencilla de usar, para ello agregaremos
campos para dirección origen correo,
campo de direcciones de destinatarios
agregando igualmente otros dos campos para enviar copias y copias ocultas a
otras direcciones de correo electrónico. Más abajo se encontrara el campo donde
puedes agregar el mensaje que desees
enviar mediante el correo. En la parte inferior se encontrara los botones de
Enviar, en el cual le solicitara la contraseña
del correo de origen. Además el botón de adjuntar
da la posibilidad de agregar cuantos
archivos adjuntos desee teniendo en consideración que los servidores de
correo no soportan archivos que la suma de sus
pesos superen los 25 MB.
La interfaz gráfica que implementaremos quedara como muestra
la Imagen 1.
Imagen 1. Interfaz de la aplicación.
Como se ve en la Imagen 2 se pueden agregar todos los campos
antes mencionados, sin embargo no es necesario que los campos CC y CCO tengan
algún contenido es decir, estos campos no son obligatorios. Sin embargo debe de
existir al menos un destinatario del correo, de lo contrario el programa nos
informara de un error al enviar el correo, cabe destacar que tanto los campos
de destinatarios, CC y CCO pueden contener más de una dirección de correo.
Imagen 2. Interfaz con datos.
Si usted desea agregar archivos adjuntos al correo, tendrá la
posibilidad de agregar tanto archivos quiera, eso sí, debe considerar que el
servidor de correo solo soporta archivos con un peso menor a 25 MB, esto quiere
decir que la suma de los pesos de los archivos que adjunte están sujeto a esta
regla. Esta aplicación le permite la selección de múltiples archivos, no
importa de lugar donde se encentren en su equipo.
Imagen 3. Seleccionado archivos para adjuntar.
Una vez adjuntados los archivos que desee adjuntar, podrá verlos
en la parte inferior del programa, cabe recalcar que este solo mostrara los
nombres de los archivos, sin la posibilidad de eliminar uno de esos, sin
embargo puede borrar todo los
archivos adjuntos con el botón X,
que se encuentra al lado derecho del visor de archivos adjuntos tal como se
muestra en la imagen 4.
Imagen 4. Muestra los archivos adjuntos.
Al momento de enviar el correo, se le pedirá la contraseña
del correo de origen como medida de autenticación, cabe recalcar que siempre
que envié un correo nuevo debe de realizar esta acción. Sin embargo se puede
modificar el código fuente para enviar correos desde un correo predeterminado.
En Imagen 5 se puede apreciar la petición de contraseña.
Imagen 5. Requiere contraseña para enviar.
Cuando el correo se envió correctamente, este muestra un
mensaje de estado en el cual indica que fue enviado correctamente.
Imagen 6. Muestra mensaje de envió correcto.
En caso contrario se nos notificara que al enviar el correo Ocurrió
un error al momento de enviar el correo, esto puede ocurrir en diferentes
casos.
- Se ingresó mal la contraseña.
- Algún destinatario está mal escrito.
Imagen 7. Mensaje de error.
A continuación se mostraran algunos fragmentos de código que
pueden ser de interés para ustedes los lectores.
Clase Envía Email
Este fragmento de código muestra la configuración de las
propiedades de Java Mail, en el cual se ingresan los nombres de los host de
origen en este caso Gmail, Hotmail. Por otro lado se identifican los puertos
por los cuales se enviran los correros, además existe una línea de código donde
se puede identificar si el correo pertenece a un correo Gmail o Hotmail.
1: Properties props = new Properties(); //propiedades a agragar
2: props.put("mail.smtp.user", this.origen); //correo origen
3: props.put("mail.smtp.port", "587"); //puesto de salida
4: props.put("mail.smtp.starttls.enable", "true"); //inicializar el servidor
5: props.put("mail.smtp.auth", "true"); //autentificacion
6: String identifica = origen.substring(
7: origen.indexOf("@") + 1,
8: origen.indexOf("@") + 6);
9: if (identifica.equals("gmail")) {
10: props.put("mail.smtp.host", "smtp.gmail.com"); //tipo de servidor
11: props.put("mail.smtp.socketFactory.port", "465"); //activar el puerto
12: props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
13: props.put("mail.smtp.socketFactory.fallback", "false");
14: } else {
15: props.put("mail.smtp.host", "smtp.live.com"); //tipo de servidor
16: }
En el siguiente fragmento se puede identificar si el correo
lleva o no archivos adjuntos, en caso de que contenga algún archivo adjunto se
realiza un proceso de recorrido de la lista de adjuntos agregándolos al
bodyPart del correo.
1: if (adjunto != null) {
2: for (Archivo_Class adjunto1 : adjunto) {
3: BodyPart adj = new MimeBodyPart();
4: adj.setDataHandler(new DataHandler(new FileDataSource(adjunto1.ruta)));
5: adj.setFileName(adjunto1.nombre);
6: multiParte.addBodyPart(adj);
7: }
8: }
A continuación se puede ver el proceso de agregar los múltiples
destinatarios, además del proceso de agregar direcciones de correos donde irán
las copias y copias ocultas.
1: //AGREGAR MULTIPLES DESTINATARIOS
2: for (int i = 0; i < this.destino.get(0).size(); i++) {
3: msg.addRecipient(Message.RecipientType.TO,
4: new InternetAddress(
5: this.destino.get(0).get(i)
6: ));
7: }
8: //AGREGAR MULTIPLES CC
9: if (this.destino.get(1) != null) {
10: for (int i = 0; i < this.destino.get(1).size(); i++) {
11: msg.addRecipient(Message.RecipientType.CC,
12: new InternetAddress(
13: this.destino.get(1).get(i)
14: ));
15: }
16: }
17: //AGREGAR MULTIPLES CCO
18: if (this.destino.get(2) != null) {
19: for (int i = 0; i < this.destino.get(2).size(); i++) {
20: msg.addRecipient(Message.RecipientType.BCC,
21: new InternetAddress(
22: this.destino.get(2).get(i)
23: ));//agrega el destinatario
24: }
25: }
Aquí se puede identificar claramente cómo se agregan tanto
el texto del correo como los archivos adjuntos.
1: BodyPart texto = new MimeBodyPart();
2: texto.setText(this.cuerpo);
3: msg.setSubject(this.asunto);
4: msg.setFrom(new InternetAddress(this.origen));
5: multiParte.addBodyPart(texto);
6: msg.setContent(multiParte);
7: Transport.send(msg);
Lado interfaz
Por el lado de la interfaz, se puede apreciar la creación y despliegue
del JFileChooser, que es un buscador de archivos, se puede apreciar que se
habilita la multiselección de archivos.
1: JFileChooser fileChooser = new JFileChooser();
2: fileChooser.setCurrentDirectory(
3: new File(System.getProperty("user.home"))
4: );
5: fileChooser.setMultiSelectionEnabled(true);
Resultados
Imagen 9. Bandeja entrada Gmail.
Imagen 10. Bandeja entrada Hotmail (Outlook).
Imagen 11. Bandeja entrada Yahoo.
Si quieres descargar el proyecto ingresa a este LINK
Comentarios
Publicar un comentario
Deja tus comentario