martes, 2 de febrero de 2010

Como enviar emails desde Java

Hace ya un tiempo que no escribo en el blog, pero es que últimamente he estado muy muy liado, lo bueno es que he tenido que trabajar en muchos proyectos lo cuál me permitirá escribir unos cuantos tutoriales este més.

Para este primer tutorial he decidido poner un ejemplo de algo que puede parecer una tontería "enviar un correo electrónico desde Java" pero si no encuentra un buen ejemplo en la red puedes pegarte un buen rato.

Lo primero debemos bajarnos la librería JavaMail.jar y activation.jar y añadirlos a nuestro proyecto.


Nota. No preocuparse son dos jar de poco peso.


En principio creamos una clase para el envío de emails:



public class SendMail {
    
    private String from;
    private String to;
    private String subject;
    private String text;
    private ITracer tracer;
    
    public SendMail(String from, String to, String subject, String text){
        this.from = from;
        this.to = to;
        this.subject = subject;
        this.text = text;
        tracer = FileTracer.getInstance();
    }
    
    public void send(){
        
        Properties props = new Properties();
        props.put("mail.smtp.host", "ServidorSMTP");
        props.put("mail.smtp.port", "25"); //Suele ser este puerto
        props.put("mail.smtp.auth", "true");
                
        Session mailSession = Session.getDefaultInstance(props,new javax.mail.Authenticator() {
            
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("UsuarioSMTP",
                                                  "PasswordSMTP");
            }
        });
        
        Message simpleMessage = new MimeMessage(mailSession);
        
        InternetAddress fromAddress = null;
        InternetAddress toAddress = null;
        try {
            fromAddress = new InternetAddress(from);
            toAddress = new InternetAddress(to);
        } catch (AddressException e) {
            tracer.send(ITracer.INFO,e.getMessage());
        }
        
        try {
            simpleMessage.setFrom(fromAddress);
            simpleMessage.setRecipient(RecipientType.TO, toAddress);
            simpleMessage.setSubject(subject);
            simpleMessage.setText(text);
            
            Transport.send(simpleMessage);
            
            tracer.send(ITracer.INFO,"Email enviado a "+toAddress);
        } catch (MessagingException e) {
            tracer.send(ITracer.INFO,e.getMessage());
        }
    }
    
    public void setSubject(String subject)
    {
        this.subject = subject;
    }
    
    public void setText(String message)
    {
        this.text = message;
    }
}



Y por último sólo nos queda usarlo:



SendMail mail = new SendMail("FromEmail",
                                             "ToEmail",
                                             "Asunto",
                                             "Mensaje");
mail.send();



Un saludo y espero que os sea útil ;)

2 comentarios:

coleoptero dijo...

Donde pones: "Ahora la implementación de una conexión al puerto paralelo."

Quisiste decir:
"Ahora la implementación de una conexión al puerto serie."

Buen trabajo y enhorabuena por el blog.

Saludo.

Jorge Cantón Ferrero dijo...

Gracias coleoptero por tu puntualización, ya lo he corregido ;)