miércoles, 15 de mayo de 2013

 JavaMail(Parte 1) Enviar Mail Simple

Hoy comienzo un pequeño tutorial para enviar correos electrónicos desde una aplicación en Java. Explicare desde enviar un mensaje simple desde una cuenta predeterminada hasta como enviar un correo a múltiples destinatarios, con múltiples adjuntos con detección de servidores de correo mas utilizados.

Que necesitamos:
Obviamente contar con el JDK instalado en el equipo.
Librerias JavaMail 
NetBeans(Para las interfaces gráficas).

Los datos necesarios para enviar un email son los siguientes:
  • Servidor SMTP. Direccion SMTP de su proveedor de Correos.
  • Puerto del Servidor SMTP. El puerto en el cual nos conectaremos.
  • Usuario. El usuario para conectarnos al Servidor SMTP.
  • Password. La contraseña.
  • Destinatario. Las personas a las que va dirigido el mensaje.
  • Destinatario para copia. 
  • Destinatario para copia oculta.
  • Asunto. El asunto del mensaje.
  • Mensaje. Es la información que queremos enviar.
  • Adjuntos. Los archivos que se enviarán junto al mensaje.

Lista de Servidores SMTP.


GMail
Servidor SMTP: smtp.gmail.com
Puerto: 465,587 (según mis pruebas 465 para mensajes normales y 587 para mensajes con aduntos)

HotMail, Live, Outlook
Servidor SMTP: smtp.live.com
Puerto: 587

 Yahoo Mail
Servidor SMTP:smtp.mail.yahoo.com
Puerto:587

Después de aclarar lo necesario, las partes que contiene un correo electrónico y los servidores SMTP mas utilizados crearemos el ejemplo más sencillo. En este ejemplo todos los datos están definidos y solo debemos ejecutar el código.

Remplazar por su usuario, contraseña y destinatario para que funcione.

-------Recuerden importar las librerías al proyecto----------



import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public  class EnviarCorreo {
    final String miCorreo = "ejemplo@gmail.com";
    final String miContraseña = "miPassword";
    final String servidorSMTP = "smtp.gmail.com";
    final String puertoEnvio = "465";
    String mailReceptor = null;
    String asunto = null;
    String cuerpo = null;

    public EnviarCorreo(String mailReceptor, String asunto,
            String cuerpo) throws MessagingException {
        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");

        SecurityManager security = System.getSecurityManager();

   
            Authenticator auth = new EnviarCorreo.autentificadorSMTP();
            Session session = Session.getInstance(props, auth);
            // session.setDebug(true);

            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);
     

    }

    private class autentificadorSMTP extends javax.mail.Authenticator {
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(miCorreo, miContraseña);
        }
    }

    /**
     * @param args
     */
  public static void main(String[] args) throws MessagingException {
        // TODO Auto-generated method stub
//El destinatario puede ser cualquier direccion electronica válida
        EnviarCorreo EnviadorMail = new EnviarCorreo("destinatario@gmail.com",
                "Asunto", "Mensaje ");
        System.out.println("Mensaje Enviado");
    }

}


En la siguiente publicación Explicare como enviar un Correo Con datos Adjuntos.

No hay comentarios:

Publicar un comentario