DEV Community

Cover image for Cómo enviar Emails desde Oracle APEX usando OCI Email Delivery
Marina GP
Marina GP

Posted on

Cómo enviar Emails desde Oracle APEX usando OCI Email Delivery

📑 Tabla de contenidos

¿Cómo se pueden enviar Emails desde OCI?

En Oracle Cloud Infrastructure (OCI) existen dos formas principales de configurar SMTP para enviar emails desde tus aplicaciones:

  1. Usar el servicio nativo de OCI: Email Delivery (SMTP)
  2. Usar un proveedor SMTP de terceros

En este tutorial vamos a configurar OCI Email Delivery para enviar emails desde Oracle APEX ejecutándose en Autonomous Database.

Sin embargo, es importante saber que no estás obligado a usar SMTP de OCI. También puedes usar proveedores externos como: SendGrid, Mailgun, Amazon SES, Brevo, etc. En este caso, simplemente configuras en tu aplicación: SMTP Host del proveedor, Puerto SMTP y Usuario/contraseña o API Key.
OCI en este escenario solo actúa como la infraestructura donde corre tu aplicación, mientras que el envío de emails lo gestiona el proveedor externo.

OCI Email Delivery: SMTP nativo de Oracle Cloud

Oracle Cloud Infrastructure (OCI) tiene su propio servicio para envío de correos llamado Email Delivery.

Este servicio forma parte de OCI y permite enviar emails desde tus aplicaciones usando SMTP, sin depender de proveedores externos.

OCI Email Delivery proporciona:

  • Un servidor SMTP administrado por Oracle
  • Credenciales SMTP generadas en IAM (Identity and Access Management)
  • Integración directa con recursos dentro de tu VCN (Virtual Cloud Network)

Esto permite que aplicaciones que corren dentro de OCI — como Oracle APEX en Autonomous Database — puedan enviar emails de forma segura y confiable.


⚙️ Manos a la obra: Configuración paso a paso

1. Crear Email Domain

Después de iniciar sesión en OCI con una cuenta de administrador,
ir a 👉 Menu → Developer Services → Email Delivery → Email Domains
Seleccionar Create Email Domain
Menu Email Domain

Asegúrese de que el compartment seleccionado sea el correcto antes de continuar.
Create Email Domain
⚠️ Importante! Debes tener acceso para modificar los registros DNS del dominio que utilices.

Ingresa el nombre de Email Domain que utilizarás para enviar correos. En este caso es 'midominio.com'.

Este debe ser un dominio propio o un dominio cuyo DNS puedas administrar, ya que durante la configuración deberás agregar registros DNS para verificar y autenticar el dominio (por ejemplo, registros SPF y DKIM).

El dominio que ingreses será el que utilizarás en la dirección "From" de los correos enviados desde tu aplicación. Por ejemplo: From: noreply@midominio.com

Dominio Active
Unos segundos después de crear el dominio, su estado cambiará a 'Active'. Y DKIM Signing lo verás 'Inactive'.

Cuando el dominio esté activo, podrás continuar con el siguiente paso: crear las claves DKIM. Estas claves permiten autenticar los correos enviados desde tu dominio. Para ello selecciona la solapa DKIM.

2. Crear claves DKIM

DKIM (DomainKeys Identified Mail) es un mecanismo de autenticación de correo que permite verificar la legitimidad de los emails enviados desde un dominio.

Con DKIM:

  • ☑️ Los correos se firman digitalmente al momento de enviarse.
  • ☑️ El servidor receptor puede verificar que el mensaje no fue modificado durante la transmisión.
  • ☑️ Se confirma que el dominio del remitente autorizó el envío del correo.

Esto ayuda a mejorar la confianza del correo y reduce la probabilidad de que los mensajes sean marcados como spam.

Primero haz clic en Add DKIM para crear una nueva clave DKIM para tu dominio.
Add DKIM

Luego selecciona Add New DKIM

Add New DKIM

¿Por qué elegir Add New DKIM?
Porque:

  • ☑️ OCI genera automáticamente la clave DKIM por ti.
  • ☑️ Te proporciona un registro CNAME que deberás agregar en el DNS de tu dominio.
  • ☑️ OCI firmará automáticamente los correos enviados desde ese dominio.

La opción Import Existing DKIM, se utiliza sólo si ya generaste previamente un par de claves DKIM en otro sistema. Es poco común en la mayoría de los casos.

Selecciona Add New DKIM y presiona Next

DKIM Selector

En esta pantalla debes ingresar un DKIM Selector.

El selector es simplemente un identificador que se utiliza para generar y organizar las claves DKIM de tu dominio.

OCI sugiere usar un patrón como:

<prefix>-<shortregioncode>-<yyyymm>

Este formato es solo una convención que ayuda a organizar futuras rotaciones de claves DKIM.
Por ejemplo, podrías usar algo como: oci-us-202603
En mi caso utilicé oci1 como identificador del selector.
Luego presiona Next

DKIM Record

Haz clic en Generate DKIM Record.

OCI generará automáticamente el registro CNAME, mostrando el Record y el Value correspondientes.

El CNAME generado es el que deberás copiar y agregar en el DNS de tu dominio para completar la verificación DKIM.

Presiona Add DKIM para terminar de crear la clave. Verás que Email Domain está activo, pero aún no DKIM Signing.

DKIM Inactive

Para activar las claves deberás ir al panel de control de tu DNS.
En mi caso, administro el DNS con DonWeb, por lo que a continuación te mostraré cómo agregar este registro desde su panel de control.

3. Configurar el registro DKIM en tu proveedor de DNS.

⚠️ Si tu dominio está en otro proveedor (Cloudflare, GoDaddy, Namecheap, etc.), el proceso es el mismo: solo debes crear un registro CNAME con los valores que te proporcionó OCI.

Ahora debes agregar el registro CNAME generado por OCI en el DNS de tu dominio.

🔹 Ejemplo con DonWeb

En mi caso, administro el dominio con DonWeb. Los pasos son:

  1. Iniciar sesión en el panel de DonWeb.
  2. Seleccionar el dominio que deseas configurar.
  3. Hacer clic en Gestionar.
  4. Ir a la opción Nameservers y Zona DNS.

Una vez allí, verás una pantalla como esta donde podrás administrar los registros DNS de tu dominio.

Panel DNS DonWeb

Luego, haz clic en Agregar Registro, e ingresa los valores proporcionados por OCI. En mi caso:

[Tipo] = CNAME
CNAME Record [Nombre] = oci1_domainKey.midominio.com
CNAME Value [Contenido]= oci1_midominio.com.dkim.gur1.oraclemaildelivery.com

Add Record CNAME

Presiona Guardar
En la siguiente pantalla podrás ver el registro agregado en tu zona DNS.

Registros DNS

⚠️ Importante: Puedes tener varios registros DKIM configurados en tu dominio al mismo tiempo. Esto es completamente válido, ya que cada proveedor SMTP utiliza un selector distinto para firmar los correos, permitiendo que múltiples servicios envíen emails desde el mismo dominio sin conflictos.

En este ejemplo se observa el registro mail._domainkey.midominio.com, que corresponde a otro DKIM configurado para un servicio distinto.

Por este motivo, cada servicio de correo utiliza: su propia clave DKIM, su propio selector y su propio registro DNS.

⏳Después de agregar el registro, debes esperar a que la configuración DNS se propague. Este proceso no es inmediato y puede demorar algunos minutos (o más, dependiendo del proveedor de DNS). Y una vez propagado, OCI podrá verificar automáticamente el registro DKIM.

4. Verificar el estado DKIM

Una vez que el registro DNS se haya propagado, vuelve a la consola de OCI para verificar el estado de DKIM.

Ir a 👉 Menu → Developer Services → Email Delivery → Email Domains y selecciona tu dominio.

En la solapa DKIM, haz clic en Refresh DKIM Status.

Refresh Status DKIM

Si todo está configurado correctamente, el campo DKIM Signing Status debería aparecer como Active.

Estados Active

Si todos los estados aparecen como Active, significa que la configuración se realizó correctamente.

  • ☑️ OCI puede firmar los correos desde tu dominio (en mi caso midominio.com)
  • ☑️ DKIM está activo y validado
  • ☑️ La configuración DNS es correcta

5. Configurar SPF

SPF (Sender Policy Framework) es un mecanismo de autenticación de correo que permite definir qué servidores están autorizados a enviar emails desde tu dominio.
Esto ayuda a evitar suplantación de identidad (spoofing) y mejora la entregabilidad de tus emails.

Para configurar SPF en OCI Email Delivery debes agregar un registro TXT en el DNS de tu dominio.

En mi caso vuelvo al panel de administracion de DNS de mi dominio en DonWeb, si no existe un registro creas uno nuevo con los siguientes valores:

[Tipo] = TXT
TXT Name [Nombre] = midominio.com
TXT Value [Contenido]= v=spf1 include:spf.oraclecloud.com -all

¿Qué significa este registro?

  • v=spf1 → versión de SPF
  • include:spf.oraclecloud.com → autoriza a OCI a enviar correos desde tu dominio
  • -all → indica que otros servidores no autorizados serán marcados como sospechosos

⚠️ Importante: Si ya tienes un registro SPF configurado, no debes crear otro. En su lugar, debes incluir tu valor de OCI SPF al registro existente.

En mi caso ya tengo un SPF configurado por lo que modifico el registro agregando a continuacion a spf.oraclecloud.com

Registro SPF

6. Generar credenciales SMTP en OCI

Las credenciales SMTP son las que permitirán a tu aplicación (en nuestro caso una app en Oracle APEX) autenticarse contra el servidor de OCI Email Delivery para enviar correos.
No es necesario crear un usuario completamente nuevo, pero es recomendable por buenas prácticas. Ya que usarlo exclusivamente para el envío de correos facilita la administración y auditoría y mejora la seguridad.

Regresa a la consola de OCI y, desde el menú principal, ve a 👉 Identity & Security → Domains.

Selecciona el dominio actual (Current Domain), verifica que estás en el compartment correcto.

Luego, dirígete a User Management, selecciona el usuario con el que enviarás los correos y accede a la solapa SMTP Credentials.

Desde allí, podrás generar las credenciales haciendo clic en Generate Credentials.

Generate Credentials

Luego de ingresar un nombre para las credenciales, en mi caso APEX OCI EMAIL, podrás ver el Username y Password generados.

⚠️ Importante! Solo verás el password al generar las credenciales por lo que debes guardarlo. No podrás recuperarlo posteriormente.

Credentials data

Luego haz clic en Close, verás un listado de todas las credenciales generadas para tu usuario.

Credential list

7. Crear un remitente aprobado (Approved Sender) en OCI

⚠️ Solo podrás enviar correos desde direcciones que estén registradas como Approved Senders.

Se debe configurar un remitente aprobado para todas las direcciones "From:" que envíen correos electrónicos a través de OCI; de lo contrario, el correo será rechazado.

Ir a 👉 Menu → Developer Services → Email Delivery → Approved Senders

Menu Approved Senders

Haz click en Create Approved Sender

Create Approved Sender

Ingresa la dirección de correo que utilizarás como remitente (From:). En mi caso noreply@midominio.com.
Esta dirección debe pertenecer al mismo dominio que configuraste y verificaste con DKIM.

⚠️ Importante: El dominio del remitente debe tener el mismo dominio que configuraste y verificaste con DKIM. De lo contrario, los correos pueden ser marcados como spam o incluso rechazados por los servidores de destino.

Listado de Approved Senders

8. Configurar Servicio SMTP en Autonomous Database

Antes de comenzar la configuración en Oracle APEX, debemos obtener los datos SMTP necesarios desde OCI Email Delivery que utilizaremos en los siguientes pasos.

Para obtener estos datos, navega a:
👉 Menu → Developer Services → Email Delivery → Configuration

SMTP DATA

En esta pantalla encontrarás la información necesaria para la conexión SMTP. Copia los siguientes datos:

  • SMTP Public Endpoint
  • SMTP Port (generalmente 587)

Con estos datos y las credenciales generadas en el paso 6, podrás configurar los parámetros SMTP en tu instancia de Oracle APEX.

Accede a tu Autonomous Database con un usuario que tenga permisos de administrador.

Puedes hacerlo utilizando cualquiera de las siguientes herramientas: Oracle APEX, SQL Workshop, SQL Developer, etc.

En mi caso, me conecto directamente desde OCI a través de:
👉Database Actions → SQL

Open SQL User Admin

Ejecuta el siguiente bloque PL/SQL para configurar los parámetros SMTP en tu instancia de Oracle APEX:

BEGIN
    -- Paso 8: Datos SMTP Host (public endpoint de OCI)
    APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.public_endpoint');

    -- Paso 8: Datos SMTP Puerto 
    APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_PORT', '587');

    -- Paso 6: Credenciales SMTP Usuario
    APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'SMTPcredentials.username');

    -- Paso 6: Credenciales SMTP Password
    APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'SMTPcredentials.password');

    -- Paso 7: Direccion de envio (From) configurado en Approved Sender
    APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_FROM', 'noreply@midominio.com');

   COMMIT;
END;
/
Enter fullscreen mode Exit fullscreen mode

SQL SET_PARAMETER

9. Validar configuración de Email Delivery

Antes de enviar correos desde Oracle APEX, debemos asegurarnos de que el proveedor SMTP esté correctamente configurado y disponible para su uso con APEX_MAIL.

Ejecuta el siguiente código desde tu cliente SQL, asegurándote de utilizar un usuario con permisos de administrador:

BEGIN
  APEX_INSTANCE_ADMIN.VALIDATE_EMAIL_CONFIG;
END;
/
Enter fullscreen mode Exit fullscreen mode

VALIDATE_EMAIL_CONFIG

Si se informa algún error (por ejemplo, "ORA-29279: SMTP permanent error: 535 Authentication credentials invalid"), ajuste los parámetros SMTP o revise la configuración y repita la validación.

10. Prueba de envío de Email desde APEX

Para enviar un email de prueba, inicia sesión en Oracle APEX y desde 👉 SQL Workshop → SQL Commands, ejecuta lo siguiente:

BEGIN
  APEX_MAIL.SEND(
    p_from => 'approved_sender@midominio.com', -- Ex: noreply@midominio.com
    p_to   => 'any@example.com',
    p_subj => 'Email from Oracle Autonomous Database',
    p_body => '<table width="100%" cellpadding="0" cellspacing="0" bgcolor="#ff0000"> <tr> <td align="center" style="padding:40px; font-family:''Trebuchet MS'', Arial, sans-serif; color:#000000; font-size:20px;"> <b>MAIL ENVIADO DESDE ORACLE APEX</b> <br><small>Configurado con OCI Email Delivery</small> </td> </tr> </table>');
  APEX_MAIL.PUSH_QUEUE;
END;
/
Enter fullscreen mode Exit fullscreen mode

APEX_MAIL.PUSH_QUEUE se utiliza para enviar inmediatamente los correos que están en cola en Oracle APEX.

APEX_MAIL.SEND

Cuando usas APEX_MAIL.SEND, el correo no se envía al instante, sino que queda en una cola interna.

Al ejecutar APEX_MAIL.PUSH_QUEUE, APEX procesa esa cola y realiza el envío.

💡 Nota:

En entornos productivos, el envío suele ejecutarse automáticamente mediante un job programado, en lugar de forzarlo manualmente con APEX_MAIL.PUSH_QUEUE.
Forzar el envío inmediato de todos los correos puede impactar la performance del sistema.
Por este motivo, es recomendable definir una estrategia de envío adecuada según el entorno: Desarrollo, Testing, Producción.

Email recibido usando APEX_MAIL.SEND:

MAIL FROM APEX

11. Gestión de emails enviados y con errores

Dentro de la consola de administración de Oracle APEX, navega a 👉 Manage Instance → Mail Queue

Acá podrás ver los errores de los mails que no pudieron ser enviados. Ejemplo: ORA-29279: SMTP permanent error: 535 Authorization failed: Envelope From address <info@dominio_sin_autorizacion.com> not authorized, lo cual ocurre cuando se envía un mail con una dirección de email no autorizada en el From: (una de las causas puede ser que ese correo no haya sido agregado en Approved Senders ).

Gestion Mail Queue

También se puede supervisar la entrega de correos, consultando las tablas APEX_MAIL_QUEUE y APEX_MAIL_LOG desde SQL con usuario administrador.

select * from APEX_MAIL_QUEUE
Enter fullscreen mode Exit fullscreen mode

Table APEX_MAIL_QUEUE

select * from APEX_MAIL_LOG
Enter fullscreen mode Exit fullscreen mode

Table APEX_MAIL_LOG

🚀Próximo paso

Ahora ya puedes enviar correos desde APEX. En el siguiente post veremos cómo utilizar Email Templates en Oracle APEX, para crear mensajes más profesionales y reutilizables.

⬆️ Ir a Tabla de Contenidos

Top comments (0)