jueves, 28 de junio de 2012

Envio de correo electronico con JavaMail

En esta entrada mostrare la forma de mandar un correo electronico usando una cuenta de gmail y utilizando la libreria JavaMail, utilizare interfaces e implementaciones:

Antes que nada, se deben descargar el API

La interfaz:

public interface MailServices {
   
    public void enviar(String mailReceptor, String asunto, String cuerpo) throws ScaseMailException;
   
}


La implementación:

public class MailServicesImpl implements MailServices {

    final String miCorreo = "cuenta@gmail.com";
    final String miContraseña = "xxxxxxxx";
    final String servidorSMTP = "smtp.gmail.com";
    final String puertoEnvio = "465";
    String mailReceptor = null;
    String asunto = null;
    String cuerpo = null;

    @Override
    public void enviar(String mailReceptor, String asunto, String cuerpo) throws ScaseMailException {

        try {
            this.mailReceptor = mailReceptor;
            this.asunto = asunto;
            this.cuerpo = cuerpo;

            Properties props = new Properties();
            props.put("mail.smtp.user", miCorreo);
            props.put("mail.smtp.host", servidorSMTP);
            props.put("mail.smtp.port", puertoEnvio);
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.socketFactory.port", puertoEnvio);
            props.put("mail.smtp.socketFactory.class",
                    "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.fallback", "false");

            Authenticator auth = new autentificadorSMTP();
            Session session = Session.getInstance(props, auth);

            MimeMessage msg = new MimeMessage(session);
            msg.setText(cuerpo);
            msg.setSubject(asunto);
            msg.setFrom(new InternetAddress(miCorreo));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(
                    mailReceptor));
            Transport.send(msg);
        } catch (Exception e) {
            throw new ScaseMailException(e.toString(), e.getMessage());
        }
    }
   

    private class autentificadorSMTP extends javax.mail.Authenticator {

        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(miCorreo, miContraseña);
        }
    }
}



No hay comentarios:

Publicar un comentario