Posts Tagged ‘email

22
Nov
12

Enviar email con Java GMAIL/HOTMAIL

Para enviar correos electrónicos en java utilizaremos el API Java Mail, este API proporciona soporte para la construcción y envío de correos, independientemente del protocolo o la plataforma.

para nuestro ejemplo utilizamos 2 plataformas de emails:

  • gmail
  • hotmail

El ejemplo está basado en el patrón MVC tratado anteriormente en esta entrada, y subir archivos al servidor tratado en esta entrada; pero lo realmente importante son 3 archivos los (2) archivos de configuración y (1) la clase MailSender que es la encargada de hacer la magia.

la clase MailSender

package org.ingenio.ds.util.mail;

import org.apache.commons.fileupload.FileItem;

import com.sun.mail.smtp.SMTPTransport;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;

public class MailSender{

	public static void enviarCorreo(String tipoServidor,String asunto, String destinatarios, List<FileItem> adjuntos, String contenido) throws Exception {
		if(tipoServidor==null){
			tipoServidor="smtp";
		}
		//objeto donde almacenamos la configuración para conectarnos al servidor
        Properties properties = new Properties();
        //cargamos el archivo de configuracion
        properties.load(new MailSender().getClass().getResourceAsStream("/org/ingenio/ds/util/mail/"+tipoServidor+".properties"));
        //creamos una sesión
        Session session = Session.getInstance(properties, null);
		//creamos el mensaje a enviar
        Message mensaje = new MimeMessage(session);
        //agregamos la dirección que envía el email
        mensaje.setFrom(new InternetAddress(properties.getProperty("mail.from")));
        List<InternetAddress> emailsDestino = new ArrayList<InternetAddress>();
        int i = 0;
        StringTokenizer emailsSt = new StringTokenizer(destinatarios,";,");
        while (emailsSt.hasMoreTokens()) {
        	String email=emailsSt.nextToken();
        	try{
        		//agregamos las direcciones de email que reciben el email, en el primer parametro envíamos el tipo de receptor
        		mensaje.setRecipients(Message.RecipientType.TO, new InternetAddress(email));
        		//Message.RecipientType.TO;  para
        		//Message.RecipientType.CC;  con copia
        		//Message.RecipientType.BCC; con copia oculta
        	}catch(Exception ex){
        		//en caso que el email esté mal formado lanzará una exception y la ignoramos
        	}
        }
        mensaje.setSubject(asunto);
        //agregamos una fecha al email
        mensaje.setSentDate(new Date(1,1,1));
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setText(contenido);
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(messageBodyPart);
        if (adjuntos != null) {
            for (FileItem adjunto : adjuntos) {
            	//agregamos los adjuntos
                messageBodyPart = new MimeBodyPart();
                DataSource source = new ByteArrayDataSource(adjunto.getInputStream(), adjunto.getContentType());
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName(adjunto.getName());
                multipart.addBodyPart(messageBodyPart);
            }
        }
        mensaje.setContent(multipart);
        SMTPTransport transport = (SMTPTransport) session.getTransport("smtp");
        try {
        	//conectar al servidor
            transport.connect(properties.getProperty("mail.user"), properties.getProperty("mail.password"));
            //enviar el mensaje
            transport.sendMessage(mensaje, mensaje.getAllRecipients());
        } finally {
        	//cerrar la conexión
            transport.close();
        }
    }
}

y nuestros 2 archivos de configuración
configuración servidor smtp de gmail
gmail.properties

# archivo de configuración de email de gmail
mail.smtp.host=smtp.gmail.com
mail.smtp.auth=true
mail.smtp.port=587
mail.smtp.starttls.enable=true
mail.from=tucorreo@gmail.com
mail.user=tucorreo@gmail.com
mail.password=tuclave

configuración servidor smtp de hotmail
hotmail.properties

# archivo de configuración de email de hotmail
mail.smtp.host=smtp.live.com
mail.smtp.auth=true
mail.smtp.port=25
mail.smtp.starttls.enable=true
mail.from=tucorreo@hotmail.com
mail.user=tucorreo@hotmail.com
mail.password=tuclave

dentro de los archivos de configuración las líneas

mail.from=tucorreo@hotmail.com
mail.user=tucorreo@hotmail.com
mail.password=tuclave

se utilizan para el envío del email pero no son para la configuración del smtp.




I+Ds

Dudas consultas
Facebook
Twiter
Google +

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevas publicaciones por correo.

Únete a otros 354 suscriptores

Redes Sociales y Archivos

Entradas

May 2024
L M X J V S D
 12345
6789101112
13141516171819
20212223242526
2728293031