logo

Enviar correo electrónico en Java

  1. Envío de correo electrónico utilizando la API JavaMail
  2. Pasos para enviar correo electrónico usando la API JavaMail
    1. Obtener el objeto de sesión
    2. redactar el mensaje
    3. enviar el mensaje
  3. Ejemplo sencillo de envío de correo electrónico utilizando la API JavaMail
  4. Ejemplo de envío de correo electrónico utilizando JavaMail API a través del servidor SMTP proporcionado por el proveedor de alojamiento

Hay varias formas de enviar correos electrónicos utilizando la API JavaMail. Para ello es necesario disponer de un servidor SMTP que se encargue de enviar los correos.

Puede utilizar una de las siguientes técnicas para obtener el servidor SMTP:

  • Instale y utilice cualquier servidor SMTP, como el servidor Postcast, el servidor Apache James, el servidor cmmail, etc. (o)
  • Utilice el servidor SMTP proporcionado por el proveedor de alojamiento, p. mi servidor SMTP es mail.javatpoint.com (o)
  • Utilice el servidor SMTP proporcionado por otras empresas, p. gmail etc

Aquí, aprenderemos los tres enfoques anteriores para enviar correos electrónicos utilizando la API de javamail. Pero deberíamos aprender los pasos básicos para enviar correos electrónicos desde una aplicación Java.


Pasos para enviar correo electrónico usando la API JavaMail

Existen los siguientes tres pasos para enviar correos electrónicos mediante JavaMail. Son los siguientes:

    Obtener el objeto de sesiónque almacena toda la información del host como nombre de host, nombre de usuario, contraseña, etc.redactar el mensaje enviar el mensaje


1) Obtener el objeto de sesión

El clase javax.mail.Session proporciona dos métodos para obtener el objeto de la sesión, el método Session.getDefaultInstance() y el método Session.getInstance(). Puede utilizar cualquier método para obtener el objeto de sesión.

Método de clase de sesión

No.MétodoDescripción
1Sesión estática pública getDefaultInstance (accesorios de propiedades)devuelve la sesión predeterminada.
2sesión estática pública getDefaultInstance (accesorios de propiedades, autenticación de autenticador)devuelve la sesión predeterminada.
3sesión pública estática getInstance (accesorios de propiedades)devuelve la nueva sesión.
4sesión pública estática getInstance (accesorios de propiedades, autenticación del autenticador)devuelve la nueva sesión.

Ejemplo de método getDefaultInstance()

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getDefaultInstance(properties,null); 

Ejemplo del método getInstance()

 Properties properties=new Properties(); //fill all the information like host name etc. Session session=Session.getInstance(properties,null); 

2) Redacta el mensaje

La clase javax.mail.Message proporciona métodos para redactar el mensaje. Pero es una clase abstracta, por lo que su subclase javax.mail.internet.MimeMessage se utiliza principalmente.
Para crear el mensaje, debe pasar el objeto de sesión en el constructor de la clase MimeMessage. Por ejemplo:
 MimeMessage message=new MimeMessage(session); 
Ahora se ha creado el objeto de mensaje, pero para almacenar información en este objeto, la clase MimeMessage proporciona muchos métodos. Veamos los métodos proporcionados por la clase MimeMessage:

Métodos comúnmente utilizados de la clase MimeMessage

No.MétodoDescripción
1setFrom público vacío (Dirección de dirección)se utiliza para configurar el campo del encabezado.
2public void addRecipient (tipo Message.RecipientType, dirección dirección)se utiliza para agregar la dirección dada al tipo de destinatario.
3public void addRecipients (tipo Message.RecipientType, direcciones Dirección [])se utiliza para agregar las direcciones dadas al tipo de destinatario.
4setSubject público vacío (asunto de cadena)se utiliza para configurar el campo del encabezado del asunto.
5setText público vacío (mensaje de texto de cadena)se utiliza para establecer el texto como contenido del mensaje utilizando texto/tipo MIME simple.
6setContent público vacío (mensaje de objeto, tipo de contenido de cadena)se utiliza para establecer el contenido como contenido del mensaje utilizando el tipo MIME dado.

Ejemplo para redactar el mensaje:

 MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress('[email protected]')); message.addRecipient(Message.RecipientType.To, new InternetAddress('[email protected]')); message.setHeader('Hi, everyone'); message.setText('Hi, This mail is to inform you...'); 

3) envía el mensaje

La clase javax.mail.Transport proporciona un método para enviar el mensaje.

Métodos comúnmente utilizados de clase de transporte.

No.MétodoDescripción
1envío vacío estático público (mensaje de mensaje)se utiliza enviar el mensaje.
2envío público estático vacío (mensaje mensaje, dirección [] dirección)se utiliza para enviar el mensaje a las direcciones indicadas.

Ejemplo para enviar el mensaje:

 Transport.send(message); 

Ejemplo sencillo de envío de correo electrónico en Java

descargue estos archivos jar o vaya al sitio de Oracle para descargar la última versión.
En este ejemplo, aprenderemos cómo enviar correo electrónico mediante el servidor SMTP instalado en la máquina, p. Servidor Postcast, servidor Apache James, servidor Cmail, etc. Si desea enviar correo electrónico utilizando el servidor SMTP proporcionado por el proveedor de alojamiento, consulte el ejemplo siguiente a este.
Para enviar el correo electrónico utilizando la API JavaMail, debe cargar los dos archivos jar:
correo.jar
activación.jar
 import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args){ String to = '[email protected]';//change accordingly String from = '[email protected]';change accordingly String host = 'localhost';//or IP address //Get the session object Properties properties = System.getProperties(); properties.setProperty('mail.smtp.host', host); Session session = Session.getDefaultInstance(properties); //compose the message try{ MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('Ping'); message.setText('Hello, this is example of sending email '); // Send message Transport.send(message); System.out.println('message sent successfully....'); }catch (MessagingException mex) {mex.printStackTrace();} } } 
descargue este ejemplo para enviar correo electrónico

En este ejemplo, aprenderemos cómo enviar correo electrónico mediante el servidor SMTP instalado en la máquina, p. Servidor Postcast, servidor Apache James, servidor Cmail, etc. Si desea enviar correo electrónico utilizando el servidor SMTP proporcionado por el proveedor de alojamiento, consulte el ejemplo siguiente a este.

Para ejecutar este ejemplo, necesita cargar dos archivos jar. Hay 4 formas de cargar el archivo jar. Una de las formas es establecer classpath. Veamos cómo ejecutar este ejemplo:

Cargue el archivo jarc:> establecer classpath=mail.jar;activación.jar;.;
compilar el archivo fuentec:> javac EnviarEmail.java
contenerc:> java Enviar correo electrónico

Ejemplo de envío de correo electrónico en Java a través del servidor SMTP proporcionado por el proveedor de host

descargue estos archivos jar o vaya al sitio de Oracle para descargar la última versión.
Si está utilizando el servidor SMTP proporcionado por el proveedor de alojamiento, p. mail.javatpoint.com, debe autenticar el nombre de usuario y la contraseña. La clase javax.mail.PasswordAuthentication se utiliza para autenticar la contraseña.
Si envía el correo electrónico utilizando la API JavaMail, cargue los dos archivos jar:
correo.jar
activación.jar
 import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendMailBySite { public static void main(String[] args) { String host='mail.javatpoint.com'; final String user='[email protected]';//change accordingly final String password='xxxxx';//change accordingly String to='[email protected]';//change accordingly //Get the session object Properties props = new Properties(); props.put('mail.smtp.host',host); props.put('mail.smtp.auth', 'true'); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user,password); } }); //Compose the message try { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(user)); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); message.setSubject('javatpoint'); message.setText('This is simple program of sending email using JavaMail API'); //send the message Transport.send(message); System.out.println('message sent successfully...'); } catch (MessagingException e) {e.printStackTrace();} } } 
descargue este ejemplo para enviar correo electrónico

Como puede ver en el ejemplo anterior, el ID de usuario y la contraseña deben estar autenticados. Como ilustra este programa, puedes enviar correos electrónicos fácilmente. Cambie el nombre de usuario y la contraseña en consecuencia. Veamos cómo ejecutarlo una vez más mediante una técnica sencilla:

Cargue el archivo jarc:> establecer classpath=mail.jar;activación.jar;.;
compilar el archivo fuentec:> javac EnviarMailBySite.java
contenerc:> java EnviarMailBySite