Integración de JavaMail con Email Delivery

Utilice JavaMail para enviar correos electrónicos a través del servicio Email Delivery.

JavaMail proporciona un marco independiente de la plataforma e independiente del protocolo para crear aplicaciones de correo y mensajería. Antes de utilizar JavaMail, debe configurar Email Delivery y tener en cuenta la información de envío SMTP y las credenciales SMTP. En esta guía se utiliza el IDE de Eclipse y la API de JavaMail para enviar correos electrónicos a través de Email Delivery.

Importante

Estas instrucciones contienen código de ejemplo para su comodidad y se deben utilizar como referencia. Para obtener soporte de cliente, debe ponerse en contacto con el servicio de soporte al cliente JavaMail. Estos pasos se probaron en una instancia informática de Oracle Linux Server versión 7.9 y en Java 8 y 11. Las aplicaciones Java (incluida JavaMail) se deben actualizar a la última versión para garantizar que los últimos protocolos, cifrados y parches de seguridad cumplen con los cifrados y las políticas de seguridad soportadas de Oracle.

Configuración de JavaMail para enviar correo electrónico a través de Email Delivery

Para activar JavaMail para probar la configuración de Email Delivery:

  1. Asegúrese de que Email Delivery está configurado para enviar correos electrónicos. Consulte Introducción.

    Nota

    Las credenciales SMTP son necesarias para configurar JavaMail para utilizar Email Delivery. Asegúrese de anotar el nombre de usuario y la contraseña al generar las credenciales SMTP.

  2. Abra un explorador y vaya a https://github.com/javaee/javamail/releases.
  3. En Descargas, seleccione javax.mail.jar para descargar la última versión de JavaMail.
  4. Realice los siguientes pasos para crear un proyecto en Eclipse:
    1. En Eclipse, abra el menú Archivo. Seleccione Nuevo y, a continuación, haga clic en Proyecto Java.
    2. En el cuadro de diálogo para crear un proyecto Java, introduzca un nombre de proyecto y, a continuación, haga clic en Siguiente.
    3. En el recuadro de diálogo de configuración de Java, seleccione el separador Bibliotecas.
    4. Haga clic en Agregar JAR externos.
    5. En el cuadro de diálogo de selección de JAR, vaya a la carpeta en la que ha descargado JavaMail. Seleccione el archivo javax.mail.jar y, a continuación, haga clic en Abrir.
    6. En el cuadro de diálogo de configuración de Java, haga clic en Terminar.
  5. En Eclipse, en la ventana del explorador de paquetes, amplíe el proyecto.
  6. En el proyecto, haga clic con el botón derecho en el directorio src, seleccione Nuevo y, a continuación, haga clic en Clase.
  7. En el cuadro de diálogo de nueva clase Java, introduzca "OCIemail" en el campo Nombre y, a continuación, haga clic en Terminar.
  8. Introduzca el siguiente código en OCIemail.java para enviar un correo electrónico de prueba con JavaMail:

    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
     
    public class OCIemail {
     
        // Replace FROM with your "From" address.
        // This address must be added to Approved Senders in the console.
        static final String FROM = "<sender email address>";
        static final String FROMNAME = "<sender name>";
     
        // Replace TO with a recipient address.
        static final String TO = "<recipient email address>";
     
        // Replace smtp_username with your Oracle Cloud Infrastructure SMTP username generated in console.
        static final String SMTP_USERNAME = "<username OCID from SMTP credentials>";
     
        // Replace smtp_password with your Oracle Cloud Infrastructure SMTP password generated in console.
        static final String SMTP_PASSWORD = "<SMTP password>";
     
        // Oracle Cloud Infrastructure Email Delivery hostname.
        static final String HOST = "<SMTP endpoint>";
     
        // The port you will connect to on the SMTP endpoint. Port 25 or 587 is allowed.
        static final int PORT = 587;
     
           static final String SUBJECT = "<subject of your email>";
           static final String BODY = String.join(
     
               System.getProperty("line.separator"),
               "<h1>OCI Email Delivery test</h1>",
               "<p>This email was sent with OCI Email Delivery using the ",
               "<a href='Javamail'>https://github.com/javaee/javamail'>Javamail Package</a>",
              " for <a href='Javahttps://www.java.com'>Java</a>."
     
           );
     
        public static void main(String[] args) throws Exception {
     
            // Create a Properties object to contain connection configuration information.
     
           Properties props = System.getProperties();
           props.put("mail.transport.protocol", "smtp");
           props.put("mail.smtp.port", PORT);
     
           //props.put("mail.smtp.ssl.enable", "true"); //the default value is false if not set
           props.put("mail.smtp.auth", "true");
           props.put("mail.smtp.auth.login.disable", "true");  //the default authorization order is "LOGIN PLAIN DIGEST-MD5 NTLM". 'LOGIN' must be disabled since Email Delivery authorizes as 'PLAIN'
           props.put("mail.smtp.starttls.enable", "true");   //TLSv1.2 is required
           props.put("mail.smtp.starttls.required", "true");  //Oracle Cloud Infrastructure required
     
            // Create a Session object to represent a mail session with the specified properties.
           Session session = Session.getDefaultInstance(props);
     
            // Create a message with the specified information.
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(FROM,FROMNAME));
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
            msg.setSubject(SUBJECT);
            msg.setContent(BODY,"text/html");
     
            // Create a transport.
            Transport transport = session.getTransport();
               
     
            // Send the message.
     
            try
            {
     
                System.out.println("Sending Email now...standby...");
     
     
                // Connect to OCI Email Delivery using the SMTP credentials specified.
                transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);    
     
                // Send email.
                transport.sendMessage(msg, msg.getAllRecipients());
                System.out.println("Email sent!");
     
            }
     
            catch (Exception ex) {
     
                System.out.println("The email was not sent.");
                System.out.println("Error message: " + ex.getMessage());
     
            }
     
            finally
     
            {
     
                // Close & terminate the connection.
                transport.close();
     
            }
     
        }
     
    }
  9. En el archivo OCIemail.java, sustituya lo siguiente por sus valores:

    Nota

    Las direcciones de correo electrónico distinguen entre mayúsculas y minúsculas. Asegúrese de que las direcciones se corresponden con las introducidas en Remitentes aprobados en la consola.

    • FROM: sustituya por la dirección de correo electrónico del remitente. Esta dirección de correo electrónico se debe agregar a la lista de remitentes aprobados en Email Delivery primero.
    • TO: sustituya por la dirección de correo electrónico del destinatario.
    • Credenciales de SMTP: sustituya smtp_username y smtp_password por el nombre de usuario y la contraseña SMTP de Oracle Cloud Infrastructure generados en la consola.
    • HOST: sustituya por el punto final SMTP de Email Delivery. Por ejemplo, smtp.us-ashburn-1.oraclecloud.com.
  10. Consulte los requisitos para configuring SMTP connection con Email Delivery. Email Delivery requiere TLSv1.2. Algunos valores por defecto de Javamail deben desactivarse. Por ejemplo, JavaMail autoriza en un orden determinado. El orden de autorización por defecto es "LOGIN PLAIN DIGEST-MD5 NTLM". Dado que Email Delivery autoriza como "PLAIN", se debe desactivar "LOGIN". Por ejemplo, se introduce el siguiente código en el archivo OCIemail.java para configurar la conexión SMTP:

    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.auth.login.disable", "true"); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.starttls.required", "true"); 
  11. Abra el menú Archivo y haga clic en Guardar.
  12. Para crear el proyecto, abra el menú Proyecto y seleccione Crear proyecto. Si esta opción está desactivada, puede que tenga activada la creación automática.
  13. Para iniciar el programa y enviar el correo electrónico, abra el menú Ejecutar y, a continuación, haga clic en Ejecutar.
  14. Revise el resultado. Si el correo electrónico se ha enviado correctamente, la consola mostrará "Correo electrónico enviado correctamente". De lo contrario, aparecerá un mensaje de error.
  15. Conéctese al buzón del destinatario para verificar la recepción del correo electrónico.