Envío de correo electrónico desde Oracle APEX

Puede utilizar el paquete APEX_MAIL para enviar correos electrónicos desde las aplicaciones de Oracle APEX desplegadas en Autonomous Database.

Antes de utilizar APEX_MAIL, debe configurar un servidor SMTP que entregue el correo electrónico de Oracle APEX. Oracle APEX en Autonomous Database soporta el servicio Oracle Cloud Infrastructure Email Delivery, así como proveedores de correo electrónico de terceros.

Configuración de OCI Email Delivery

Su instancia de Oracle APEX puede utilizar el servicio OCI Email Delivery para enviar correos electrónicos desde aplicaciones APEX.

Para configurar la funcionalidad APEX_MAIL para utilizar el servicio OCI Email Delivery:

  1. Identifique el punto final de conexión SMTP para Email Delivery. Configurará el punto final como el host SMTP en su instancia de APEX en el paso 4. Puede que necesite suscribirse a regiones adicionales de Oracle Cloud Infrastructure si Email Delivery no está disponible en su región actual. Consulte Configuración de la conexión SMTP para obtener más información.
  2. Genere credenciales SMTP para Email Delivery. La instancia de APEX utiliza credenciales para autenticarse con los servidores de Email Delivery al enviar correo electrónico. Para obtener más información, consulte Creación de credenciales SMTP.
  3. Cree un remitente aprobado para Email Delivery. Debe realizar este paso para todas las direcciones del correo electrónico que utilice como origen con llamadas de "From" (De) con APEX_MAIL.SEND, como la dirección de correo electrónico de la aplicación "From" (De) en sus aplicaciones o en el parámetro SMTP_FROM de instancia. Consulte Gestión de emisores aprobados para más información.
  4. Conéctese a la instancia de Autonomous Database como usuario ADMIN con un cliente SQL y configure los siguientes parámetros SMTP con APEX_INSTANCE_ADMIN.SET_PARAMETER:
    • SMTP_HOST_ADDRESS: especifica el punto final de conexión SMTP del paso 1.
    • SMTP_USERNAME: especifica el Nombre de Usuario de la Credencial SMTP del Paso 2
    • SMTP_PASSWORD: especifica la contraseña de las credenciales SMTP del paso 2.
    • SMTP_HOST_PORT: mantener el valor por defecto para este parámetro (587)
    • SMTP_TLS_MODE: mantener el valor por defecto para este parámetro (STARTTLS)
    Por ejemplo:
    BEGIN
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.email.us-phoenix-1.oci.oraclecloud.com');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'ocid1.user.oc1.username');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'password');
      COMMIT;
    END;
    /

    Consulte APEX_INSTANCE_ADMIN para obtener más información.

Consulte Visión general de Email Delivery para obtener más información.

Configurar proveedor de correo electrónico de terceros

Su instancia de Oracle APEX puede utilizar proveedores de correo electrónico de terceros para enviar correos electrónicos desde aplicaciones APEX.

Antes de configurar un proveedor de correo electrónico de terceros en APEX, asegúrese de que se cumplan los siguientes requisitos:

  • Autonomous Database debe estar configurada para utilizar un punto final privado.
  • El punto final SMTP (puerto 25 o 587) del proveedor de correo electrónico debe ser accesible desde la red virtual en la nube (VCN) y la subred donde se aprovisiona Autonomous Database.

Consulte Configuración de acceso de Red con puntos finales privados para más información.

Después de que se cumplan los requisitos anteriores:

  1. Agregue la siguiente lista de control de acceso para el punto final SMTP como ADMIN (tenga en cuenta el parámetro private_target):
    BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'smtp.example.com',
        ace => XS$ACE_TYPE(
          privilege_list => XS$NAME_LIST('SMTP'),
          principal_name => APEX_APPLICATION.g_flow_schema_owner,
          principal_type => XS_ACL.ptype_db),
        private_target => true);
    END;
    /
    Nota

    Si define la propiedad de base de datos ROUTE_OUTBOUND_CONNECTIONS en PRIVATE_ENDPOINT, no es necesario definir listas de control de acceso para puntos finales SMTP individuales para acceder a ellos desde APEX. Consulte Seguridad mejorada para conexiones salientes con puntos finales privados para obtener más información.
  2. Conéctese a Autonomous Database como usuario ADMIN con un cliente SQL y configure los siguientes parámetros SMTP con APEX_INSTANCE_ADMIN.SET_PARAMETER. Si el proveedor de correo electrónico de terceros no necesita autenticación, omita los parámetros SMTP_USERNAME y SMTP_PASSWORD.
    • SMTP_HOST_ADDRESS: especifica el punto final de conexión SMTP del paso 1.
    • Los valores válidos para el parámetro SMTP_HOST_PORT son 25 o 587
    • Defina el valor para el parámetro SMTP_TLS_MODE en Y

    Por ejemplo:

    BEGIN
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.example.com');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_PORT', '587');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_TLS_MODE', 'Y');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'username');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'password');
      COMMIT;
    END;
    /

    Consulte APEX_INSTANCE_ADMIN para obtener más información.

Validar configuración de correo electrónico

Muestra los pasos para confirmar que el proveedor de correo electrónico está listo para su uso con APEX_MAIL.

  1. Valide los valores de configuración de correo electrónico con un cliente SQL como ADMIN:
    BEGIN
      APEX_INSTANCE_ADMIN.VALIDATE_EMAIL_CONFIG;
    END;
    /

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

    Consulte APEX_INSTANCE_ADMIN para obtener más información.

  2. Envíe un correo electrónico de prueba mediante el taller de SQL de APEX. Si utiliza OCI Email Delivery, asegúrese de que el parámetro p_from coincida con uno de los remitentes aprobados. Por ejemplo:
    BEGIN
      APEX_MAIL.SEND(
        p_from => 'alice@example.com',
        p_to   => 'bob@example.com',
        p_subj => 'Email from Oracle Autonomous Database',
        p_body => 'Sent using APEX_MAIL');
    END;
    /

    Consulte APEX_MAIL para obtener más información.

  3. Para supervisar la entrega del correo electrónico en la instancia de APEX:
    1. Inicie sesión en los servicios de administración de APEX.
    2. Abra la página Gestionar instancia.
    3. Haga clic en el enlace Cola de correo en la sección Gestionar metadatos.
    También puede consultar las vistas APEX_MAIL_QUEUE y APEX_MAIL_LOG con un cliente SQL.

Notas para el envío de correo electrónico desde Oracle APEX

Proporciona notas para trabajar con proveedores de correo electrónico en Oracle APEX desde una instancia de Autonomous Database.

Tenga en cuenta lo siguiente al trabajar con proveedores de correo electrónico en Oracle APEX:

  • Existe un límite por defecto de 1 000 correos electrónicos por espacio de trabajo en un período de 24 horas. Puede actualizar o eliminar este límite en los servicios de administración de Oracle APEX o definiendo el parámetro de instancia WORKSPACE_EMAIL_MAXIMUM. Si utiliza el servicio OCI Email Delivery, el servicio puede imponer limitaciones adicionales.
  • Al utilizar el servicio OCI Email Delivery, se debe configurar un remitente aprobado para todas las direcciones posibles de origen o se rechazará el correo. Consulte Gestión de emisores aprobados para más información.