miércoles, diciembre 29, 2010

Java Mail Basico

Para abrir este blog empesare haciendo un pequeño codigo para poder enviar correos con la liberia java mail.

1.- crear un proyecto java o un proyecto web

2.- las librerias: para poder utilizar mail con java necesitamos contas con algunas librerias como: javamail (contiene dns, imap, mailapi, pop3, smtp) y una libreria que pocos mencionan, que es activation.jar

3.- si has creado un proyecto java normal, al mismo nivel que la carpeta src (si es Eclipce, My Eclipce) o source (si es NetBeans) crea una carpeta, por convencion puedes llamarla "lib" y dentro pon las librerias. ahora agrega al proyecto las librerias por medio de java build path (eclipce) o libreries (NetBeans)

si has creado un proywcto web, busca la carpeta WEB-INF, dentro hay una carpeta lib, pega las liberias

4.- crea un paquete y una clase que en mi caso llamare mail

el codigo es el siguiente:

public class Mail {

private String remitente;
private String pass;
private String cabecera;
private String mensaje;
private String puerto;

private String host;
private String auth;
private String debug;
private String starttlsEnable;
private String destinatario;

private ArrayList destinatarios;

/**
* creas sus metodos get y set
*/

public Mail(){
destinatarios= new ArrayList();
}

public void enviarMail(){
try{
Properties props = new Properties();
props.put("mail.smtp.user", getRemitente());
props.put("mail.smtp.host", getHost());
props.put("mail.smtp.auth", getAuth());
props.put("mail.debug", getDebug());
props.put("mail.smtp.starttls.enable", getStarttlsEnable());
props.put("mail.smtp.port", getPuerto());

Authenticator auth = new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(getRemitente(), getPass());
}
};
Session conexionCorreo = Session.getInstance(props, auth);
Message mensaje = new MimeMessage(conexionCorreo);
Address desde = new InternetAddress(getRemitente());
mensaje.setContent(getMensaje(),"text/plain");
mensaje.setFrom(desde);
mensaje.setSubject(getCabecera());

Address []destinos = new Address[getDestinatarios().size()];
for(int x=0;x destinos[x]=new InternetAddress(getDestinatarios().get(x));
}
mensaje.setRecipients(Message.RecipientType.TO, destinos);
Transport.send(mensaje);
mensaje=null;
conexionCorreo=null;
System.out.println("Mensaje enviado...");
}catch (Exception ex) {
ex.printStackTrace();
System.out.print("Error mensaje 1: "+ex.getMessage());
}
}
}

5.1.- si creaste un proyecto java normal, crearemos la clase main

public class EnvioMail{
public static void main(String [] args){
Mail email = new Mail();

//le damos datos a la clase mail para que esta pueda funcionar
email.setRemitente("el correo emisor");
email.setPass("el password del correo emisor");
email.setCabecera("el texto que va en asunto");
email.setMensaje("el mensaje del correo");
email.setPuerto("el puerto que ocupa el servidor de correo");
email.setHost("la direccion de correo electronico");
email.setAuth("true");//si necesita autenticacion de correo
email.setDebug("false");//si al ejecutar la clase, ara un debug al mismo tiempo
email.setStarttlsEnable("true");//habilitara el tls
email.getDestinatarios().add("correo destino 1");
email.getDestinatarios().add("correo destino 2");
// puedes poner n destinos
}
}

5.2.- si hiciste un proyecto web, entonces este codigo debera ir en un servlet por ejemplo

bueno terminare esto en un ratito por que ando en el trabajo :)