Download Enviando correos electrónicos desde Java - haciendo

Document related concepts
no text concepts found
Transcript
Blog mundosica.com
Blog - soluciones integrales en computación áplicada
http://www.mundosica.com/blog
Enviando correos electrónicos desde Java - haciendo clase
Gmail con conexión SMPT con SSL
[caption id="attachment_797" align="aligncenter" width="800"]
Java Gmail[/caption]
En el siguiente contenido consta de dos partes:
En la primera explicare como establecer una conexión con Gmail con el protocolo smpt y bajo
la capa de conexión segura(SSL).
En la segunda voy a explicar acerca de una clase(Gmail.java) que podemos re-utilizar para el
envio de correos electronicos desde nuestros proyectos en Java.
Parte 1 - Proceso básico del envío de correos electrónicos:
Lo primero vamos a explicar cual es el procedimiento básico de envíos de correos electrónicos
con SMTP con Java utilizando la API de: Javax.mail , el cual el proceso básico consiste en tres
partes:
1. Establecer las propiedades de la conexión.
1/5
Blog mundosica.com
Blog - soluciones integrales en computación áplicada
http://www.mundosica.com/blog
2. Autenticarse y establecer una sesión.
3. Agregando atributos del email y envio.
Como se comento vamos a ocupar javax.mail la cual sera una dependencia de nuestro código,
para resolver dicha dependencia podemos ocupar maven:
javax.mail
mail
1.4
O bien lo puedes descargar el .jar desde:
http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloadseeplat-419426.html#javamail-1.4.7-oth-JPR
1.- Estableciendo propiedades
Lo primero que tenemos que hacer es definir las propiedades de nuestra conexión para esto
ocupamos el paquete java.util.Properties donde vamos a establecer el puerto 465 y activamos
la autenticación con capa SSL.
// Paso 1 estableciendo las propiedades de conexión java.util.Propert
ies mailServerProperties; mailServerProperties = System.getProperties
(); mailServerProperties.put("mail.smtp.host", "smtp.gmail.com"); ma
ilServerProperties.put("mail.smtp.socketFactory.port", "465"); mailSe
rverProperties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSL
SocketFactory"); mailServerProperties.put("mail.smtp.auth", "true");
mailServerProperties.put("mail.smtp.port", "465");
2.- Autenticandose
Vamos a identificarnos y establecer sesión para esto ocupamos el paquete javax.mail.Session
, como se ve a continuación:
javax.mail.Session getMailSession = Session.getDefaultInstance(
mailServerProperties,
new javax.mail.Authenticator() {
pro
tected PasswordAuthentication getPasswordAuthentication() {
return
new PasswordAuthentication("[email protected]", "mi password");
}
});
3.- Enviado el correo
2/5
Blog mundosica.com
Blog - soluciones integrales en computación áplicada
http://www.mundosica.com/blog
Enviando el correo
javax.mail.internet.MimeMessage generateMailMessage; generateMailMess
age = new MimeMessage(getMailSession); //Estableciendo el destino (TO
) generateMailMessage.addRecipient(Message.RecipientType.TO, new Inte
rnetAddress("[email protected]"));
//Estableciendo el destino de l
a copia (CC) generateMailMessage.addRecipient(Message.RecipientType.C
C, new InternetAddress("[email protected]"));
//Estableciendo el
destino de la copia oculta (BCC) generateMailMessage.addRecipient(Mes
sage.RecipientType.BCC, new InternetAddress("[email protected]"));
//
Estableciendo el titulo del mensaje (subject) generateMailMessage.set
Subject("titulo del mensaje a enviar");
// Estableciendo el conteni
do del correo electronico enriquesido(HTML) String bodyEmail = "
correo desde gmail
Enviado de forma exitosa
"; generateMailMessage.setContent(bodyEmail, "text/html");
//Final
mente enviamos el correo javax.mail.Transport.send(generateMailMessa
ge);
Parte 2 .- Clase Gmail Una clase lista para enviar desde Gmail
Vamos a crear una clase llamada Gmail en donde le vamos a agregar lo anterior explicado a la
vez que la creamos de una forma que sea muy fácil de reutilizar, veamos como quedaría:
package com.mundosica.core.Utils;
import java.util.Properties;
i
mport javax.mail.Message; import javax.mail.MessagingException; impo
rt javax.mail.PasswordAuthentication; import javax.mail.Session; imp
ort javax.mail.internet.AddressException; import javax.mail.internet.
InternetAddress; import javax.mail.internet.MimeMessage;
public cl
ass Gmail {
static Properties mailServerProperties;
static S
ession getMailSession;
static MimeMessage generateMailMessage;
static String login = "username";
static String password = "se
cret";
static String to = null;
static String cc = null;
static String bcc = null;
static String subject = null;
st
atic String body = null;
public static void config(String..
. namesAndValues) {
if (namesAndValues.length % 2 == 1) {
throw new IllegalArgumentException("The number of arguments
must be pair.");
}
String nameConfig = null, valueCo
nfig = null;
for (int i = 0; i body gmail object
3/5
Blog mundosica.com
Blog - soluciones integrales en computación áplicada
http://www.mundosica.com/blog
it's a simple test
";
}
generateMailMessage.setContent(Gmail.body, "tex
t/html");
javax.mail.Transport.send(generateMailMessage);
return success;
}
}
Test Haciendo una prueba
Haciendo una prueba con Junit, dejo dos ejemplos de como utilizar la clase Gmail:
import org.junit.Test; public class GmailTest {
@Test
pub
lic void testSendDirecto() {
Gmail.send(
"lo
gin", "[email protected]",
"password", "secret",
"to", "[email protected]",
"cc
", "[email protected]",
"bcc", "[email protected]",
"subject", "prueba de email",
"body",
"
Esto es una prueba de envio de correos
exitosa!!
"
);
}
@Test
public void testConfigYSend
() {
//Esto quizas en el archivo de configuracion
Gm
ail.config(
"username", "[email protected]", //alia
s de login
"pass", "**secret**", //alias de password
"to", "[email protected]",
"
cc", "[email protected]",
"bcc", "[email protected]"
);
//esto en donde se envia el correo previamente ya
configurado los parametros
Gmail.send(
"tit
le", "prueba de email",//alias de subject
"msg", "
Esto es una prueba de envio de correos
exitosa!!
"
);
}
}
Código en github
Este código forma parte de un conjunto de clases que hemos desarrollado en mundosica.com,
4/5
Blog mundosica.com
Blog - soluciones integrales en computación áplicada
http://www.mundosica.com/blog
del cual extraje esta parte y lo dejo en github para quien lo guste usar:
Visitar proyecto
5/5
Powered by TCPDF (www.tcpdf.org)