Algunas de las aplicaciones que realizamos como programadores tienen la necesidad de Enviar Correos Electronicos por muchas razones, aqui veremos como realizarlo con JavaMail. JavaMail es una expansion de Java (no viene incluida, es un paquete externo) que facilita la Gestion de Correos Electronicos desde Java, se encarga de las tareas de conexion, autentificacion, seguridad y encriptacion para facilitar la tarea de los programadores. En este Ejemplo veremos como enviar mails con java utilizando una cuenta de Gmail a la que JavaMail se conectara, veamos como hacerlo…
REQUERIMIENTOS
DESARROLLO
Este Ejemplo fue realizado en 2 clases, la clase Proceso que realiza la sesion con Gmail y otra llamada Ventana que se encarga de crear la interfaz Grafica, armar el mensaje y enviarlo. Recuerda que debes importar la libreria de JavaMail.
Clase Principal
public class Proceso { static String username,contraseña; static Properties p; static Session sesion; public static void main(String args[]){ try { setup(); Ventana v = new Ventana(sesion); } catch (Exception ex) { Logger.getLogger(Proceso.class.getName()).log(Level.SEVERE, null, ex); } } private static void setup() throws MessagingException { //datos de conexion username = "tuUsername@gmail.com"; contraseña = "tuContraseña"; //propiedades de la conexion p = new Properties(); p.put("mail.smtp.auth", "true"); p.put("mail.smtp.starttls.enable", "true"); p.put("mail.smtp.host", "smtp.gmail.com"); p.put("mail.smtp.port", "587"); //creamos la sesion sesion = crearSesion(); } private static Session crearSesion() { Session session = Session.getInstance(p, new javax.mail.Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, contraseña); } }); return session; } }
Clase Ventana
Para esta Clase unicamente cabe recalcar el codigo de el boton “Enviar” que obtiene la informacion de las 2 cajas de texto (Mail to:,Asunto) y del TextArea(Mensaje) y arma el mensaje para posteriormente enviarlo.
//obtenemos datos de mensaje String para = jTextField1.getText(); String asunto = jTextField2.getText(); String texto = jTextArea1.getText(); //Construimos el Mensaje Message mensaje = new MimeMessage(sesion); try { mensaje.setRecipient(Message.RecipientType.TO, new InternetAddress(para)); mensaje.setSubject(asunto); mensaje.setText(texto); //Enviamos el Mensaje Transport.send(mensaje); JOptionPane.showMessageDialog(null, "Mail Enviado Correctamente", "Enviado",JOptionPane.INFORMATION_MESSAGE); } catch (Exception ex) { Logger.getLogger(Ventana.class.getName()).log(Level.SEVERE, null, ex); } //limpiamos cajas de texto y textarea jTextField1.setText(""); jTextField2.setText(""); jTextArea1.setText("");
RESULTADO
Dudas o Comentarios?
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
Ayuda!!! obtengo el siguiente error al correr el programa "com.sun.mail.smtp.SMTPSendFailedException: 501 5.5.4 Invalid Email address"
Bune tutorial, gracias amigo, si necestio enviar una invitacion a un evento a gmail como lo haria, es decir, hay un evento para el dia xx a la hora xx, en el sitio xxxxx, y quiero enviar un correo de invitacion con ese evento de calendario, como lo haria, gracias de antemano...
Como se haria en el caso de querer saber si el correo escrito rebotó ?