- Envío de correo electrónico utilizando la API JavaMail
- Pasos para enviar correo electrónico usando la API JavaMail
- Obtener el objeto de sesión
- redactar el mensaje
- enviar el mensaje
- Ejemplo sencillo de envío de correo electrónico utilizando la API JavaMail
- 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ón | que 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étodo | Descripción |
1 | Sesión estática pública getDefaultInstance (accesorios de propiedades) | devuelve la sesión predeterminada. |
2 | sesión estática pública getDefaultInstance (accesorios de propiedades, autenticación de autenticador) | devuelve la sesión predeterminada. |
3 | sesión pública estática getInstance (accesorios de propiedades) | devuelve la nueva sesión. |
4 | sesió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étodo | Descripción |
1 | setFrom público vacío (Dirección de dirección) | se utiliza para configurar el campo del encabezado. |
2 | public void addRecipient (tipo Message.RecipientType, dirección dirección) | se utiliza para agregar la dirección dada al tipo de destinatario. |
3 | public void addRecipients (tipo Message.RecipientType, direcciones Dirección []) | se utiliza para agregar las direcciones dadas al tipo de destinatario. |
4 | setSubject público vacío (asunto de cadena) | se utiliza para configurar el campo del encabezado del asunto. |
5 | setText público vacío (mensaje de texto de cadena) | se utiliza para establecer el texto como contenido del mensaje utilizando texto/tipo MIME simple. |
6 | setContent 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étodo | Descripción |
1 | envío vacío estático público (mensaje de mensaje) | se utiliza enviar el mensaje. |
2 | enví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
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 | descargue estos archivos jar o vaya al sitio de Oracle para descargar la última versión. |
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ónicoEn 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 jar | c:> establecer classpath=mail.jar;activación.jar;.; |
compilar el archivo fuente | c:> javac EnviarEmail.java |
contener | c:> 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
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 | descargue estos archivos jar o vaya al sitio de Oracle para descargar la última versión. |
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ónicoComo 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 jar | c:> establecer classpath=mail.jar;activación.jar;.; |
compilar el archivo fuente | c:> javac EnviarMailBySite.java |
contener | c:> java EnviarMailBySite |