Enviar correo desde Java
Este es un pequeño ejemplo de cómo enviar correos desde Java usando el API de Java Mail. Lo único que necesitaremos es descargar la librería mail.jar de la página de Java Mail y crear un programa de este estilo:
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class EnviarMail {
public static void main(String[] args) {
try {
// Se debe crear un archivo de propiedades que
// contenga el nombre del servidor SMTP
Properties props = new Properties();
props.put("mail.host", "mail.servidorcorreo.com");
// se crea un objeto de sesion
Session conexionCorreo = Session.getInstance(props, null);
// este objeto representa el mensaje a enviar
Message mensaje = new MimeMessage(conexionCorreo);
// los objetos Adress contienen informacion de recipientes de correo
Address desde = new InternetAddress("tucorreo@servidorcorreo.biz",
"Pepito Perez");
Address para = new InternetAddress("destinatario@otroservidor.com");
// asignamos el contenido. En este caso usamos 'text/plain' pero
// es posible usar 'text/html' para enviar correos con contenido
// HTML
mensaje.setContent("Este es un mensaje de texto plano!",
"text/plain");
// asignar el origen del correo
mensaje.setFrom(desde);
// asignar un destinatario
mensaje.setRecipient(Message.RecipientType.TO, para);
// asignar el asunto del correo
mensaje.setSubject("Hola, Java Mail!");
Transport.send(mensaje);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Para compilarlo y ejecutarlo desde la consola:
javac -cp mail.jar:. EnviarMail.java
java -cp mail.jar:. EnviarMail
java -cp mail.jar:. EnviarMail
Si estás usando Eclipse, debes añadir la librería mail.jar al classpath. En este artículo explico cómo hacerlo.
15 Comentarios | deja el tuyo



Buen tuto como todos casidiablo pero tengo unas dudas con respecto de
props.put(“mail.host”, “mail.servidorcorreo.com”);
mail.host -> que es especificamente es
y si es asi en mi caso la creacion del class
no dio problemas pero al momento de ejcutar el class me salio un error no se si podes indicarme cual es el error
.
C:\Downloads>javac -cp mail.jar correo.java
C:\Downloads>java -cp mail.jar correo
Exception in thread “main” java.lang.NoClassDefFoundError: correo
Caused by: java.lang.ClassNotFoundException: correo
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: correo. Program will exit.
C:\Downloads>
Hola Bett0.
Intenta compilarlo y ejecutarlo así:
javac -cp mail.jar;. correo.javajava -cp mail.jar;. correo
Me cuentas
Un saludo!
Buenas. Muy bueno el tutorial. Sería interesante si pudieras indicar cómo especificar la autenticación y los puertos para poder enviar correos utilizando el smtp de gmail por ejemplo.
Un saludo
Hola Martín… en el caso de necesitar hacerlo con Gmail, tendríamos algo de este tipo:
// Nombre del host de correo, es smtp.gmail.comprops.setProperty("mail.smtp.host", "smtp.gmail.com");
// TLS si está disponible
props.setProperty("mail.smtp.starttls.enable", "true");
// Puerto de gmail para envio de correos
props.setProperty("mail.smtp.port","587");
// Nombre del usuario
props.setProperty("mail.smtp.user", "ejemplo@gmail.com");
// Si requiere o no usuario y password para conectarse.
props.setProperty("mail.smtp.auth", "true");
Gracias a chuidiang.com
Un saludo!
¡Perfecto! Muchas gracias.
pana tengo este error :
javax.mail.MessagingException: Unknown SMTP host: mail.servidorcorreo.com;
que hago ahi
@frederick debes cambiar “mail.servidorcorreo.com” por un servidor de correo SMTP. Ese es solo un ejemplo
Un saludo!
Que paciencia tienes… sigue así un saludo.
Hola, estaba viendo tu blog y vi la forma en la que presentas tu codigo, quisiera saber como esque haces que tome esa apariencia, para explicarme bien, como haces que tu codigo se vea como en el Visual Studio, asi de colores
, me podrias compartir ese script por fa
¿Cómo integro el API Java.Mail? Osea, ¿dónde guardo l carpeta descargada del link que propones?
Excelente ejemplo. Esto, más o meenos lo hice en C sharp.
muy bueno!!
Aquí tienes un ejemplo:
http://www.quadmore.com/swingrecorder/
Un saludo!
Excelente info no sabia que podria hacerse
Saludos
no sale error pero no aparece el mensaje en mi correo
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class EnviarMail {
public static void main(String[] args) {
try {
// Se debe crear un archivo de propiedades que
// contenga el nombre del servidor SMTP
Properties props = new Properties();
// Nombre del host de correo, es smtp.gmail.com
props.setProperty(“mail.smtp.host”, “smtp.gmail.com”);
// TLS si está disponible
props.setProperty(“mail.smtp.starttls.enable”, “true”);
// Puerto de gmail para envio de correos
props.setProperty(“mail.smtp.port”,”587″);
// Nombre del usuario
props.setProperty(“mail.smtp.user”, “jrbsandoval@gmail.com”);
// Si requiere o no usuario y password para conectarse.
props.setProperty(“mail.smtp.auth”, “true”);
// se crea un objeto de sesion
Session conexionCorreo = Session.getInstance(props, null);
// este objeto representa el mensaje a enviar
Message mensaje = new MimeMessage(conexionCorreo);
// los objetos Adress contienen informacion de recipientes de correo
Address desde = new InternetAddress(“jrbsandoval@gmail.com”,
“Julio Baquero”);
Address para = new InternetAddress(“jrbsandoval@gmail.com”);
// asignamos el contenido. En este caso usamos ‘text/plain’ pero
// es posible usar ‘text/html’ para enviar correos con contenido
// HTML
mensaje.setContent(“Este es un mensaje”,
“text/plain”);
// asignar el origen del correo
mensaje.setFrom(desde);
// asignar un destinatario
mensaje.setRecipient(Message.RecipientType.TO, para);
// asignar el asunto del correo
mensaje.setSubject(“Hola”);
Transport.send(mensaje);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}