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)