Invia e-mail da Oracle APEX

È possibile utilizzare il package APEX_MAIL per inviare messaggi di posta elettronica dalle applicazioni Oracle APEX distribuite in Autonomous Database.

Prima di utilizzare APEX_MAIL, è necessario configurare un server SMTP che consegnerà i messaggi di posta elettronica da Oracle APEX. Oracle APEX su Autonomous Database supporta il servizio Oracle Cloud Infrastructure Email Delivery e provider di posta elettronica di terze parti.

Configura OCI Email Delivery

L'istanza di Oracle APEX può utilizzare il servizio OCI Email Delivery per inviare messaggi di posta elettronica dalle applicazioni APEX.

Per configurare la funzionalità APEX_MAIL per utilizzare il servizio OCI Email Delivery, effettuare le operazioni riportate di seguito.

  1. Identificare l'endpoint di connessione SMTP per il servizio di consegna tramite e-mail. L'endpoint viene configurato come host SMTP nell'istanza APEX nel passo 4. Potrebbe essere necessario effettuare la sottoscrizione a ulteriori aree geografiche di Oracle Cloud Infrastructure se il servizio di consegna tramite e-mail non è disponibile nella tua area corrente. Per ulteriori informazioni, vedere Configura connessione SMTP.
  2. Genera le credenziali SMTP per il recapito e-mail. L'istanza APEX utilizza le credenziali per l'autenticazione con i server di consegna tramite e-mail quando si invia un messaggio di posta elettronica. Per ulteriori informazioni, vedere Creazione di credenziali SMTP.
  3. Creare un mittente approvato per il servizio di consegna tramite e-mail. È necessario completare questo passo per tutti gli indirizzi di posta elettronica utilizzati come "Da" con chiamate APEX_MAIL.SEND, come indirizzo di posta elettronica dell'applicazione "Da" nelle applicazioni o nel parametro di istanza SMTP_FROM. Per ulteriori informazioni, vedere Gestione dei mittenti approvati.
  4. Connettersi all'Autonomous Database come utente ADMIN utilizzando un client SQL e configurare i seguenti parametri SMTP utilizzando APEX_INSTANCE_ADMIN.SET_PARAMETER:
    • SMTP_HOST_ADDRESS: specifica l'endpoint di connessione SMTP dal passo 1
    • SMTP_USERNAME: specifica il nome utente della credenziale SMTP dal passo 2
    • SMTP_PASSWORD: specifica la password della credenziale SMTP dal passo 2
    • SMTP_HOST_PORT: conserva il valore predefinito per questo parametro (587)
    • SMTP_TLS_MODE: mantiene il valore predefinito per questo parametro (STARTTLS)
    Ad esempio:
    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;
    /

    Per ulteriori informazioni, vedere APEX_INSTANCE_ADMIN.

Per ulteriori informazioni, vedere Panoramica del recapito e-mail.

Configura provider e-mail terze parti

L'istanza di Oracle APEX può utilizzare provider di posta elettronica di terze parti per inviare messaggi di posta elettronica dalle applicazioni APEX.

Prima di configurare un provider di posta elettronica di terze parti in APEX, assicurarsi che vengano soddisfatti i prerequisiti riportati di seguito.

  • L'Autonomous Database deve essere configurato per l'uso di un endpoint privato.
  • L'endpoint SMTP del provider di posta elettronica (porta 25 o 587) deve essere accessibile dalla rete cloud virtuale (VCN) e dalla subnet in cui viene eseguito il provisioning di Autonomous Database.

Per ulteriori informazioni, vedere Configura accesso di rete con endpoint privati.

Dopo aver soddisfatto i prerequisiti di cui sopra:

  1. Aggiungere la seguente lista di controllo dell'accesso per l'endpoint SMTP come ADMIN (notare il parametro 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

    Se si imposta la proprietà del database ROUTE_OUTBOUND_CONNECTIONS su PRIVATE_ENDPOINT, non è necessario definire le liste di controllo dell'accesso per i singoli endpoint SMTP per accedervi da APEX. Per ulteriori informazioni, vedere Sicurezza avanzata per le connessioni in uscita con endpoint privati.
  2. Connettersi ad Autonomous Database come utente ADMIN utilizzando un client SQL e configurare i parametri SMTP seguenti utilizzando APEX_INSTANCE_ADMIN.SET_PARAMETER. Se il provider di posta elettronica di terze parti non richiede l'autenticazione, saltare i parametri SMTP_USERNAME e SMTP_PASSWORD.
    • SMTP_HOST_ADDRESS: specifica l'endpoint di connessione SMTP dal passo 1
    • I valori validi per il parametro SMTP_HOST_PORT sono 25 o 587
    • Impostare il valore del parametro SMTP_TLS_MODE su Y

    Ad esempio:

    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;
    /

    Per ulteriori informazioni, vedere APEX_INSTANCE_ADMIN.

Convalida configurazione e-mail

Mostra la procedura per confermare che il provider di posta elettronica è pronto per l'uso con APEX_MAIL.

  1. Convalidare le impostazioni di configurazione e-mail utilizzando un client SQL come ADMIN:
    BEGIN
      APEX_INSTANCE_ADMIN.VALIDATE_EMAIL_CONFIG;
    END;
    /

    Se vengono segnalati errori (ad esempio, "ORA-29279: SMTP permanent error: 535 Authentication credentials invalid"), adeguare i parametri SMTP o la configurazione della rete cloud virtuale (VCN) e ripetere il passo di convalida.

    Per ulteriori informazioni, vedere APEX_INSTANCE_ADMIN.

  2. Inviare un messaggio di posta elettronica di test utilizzando APEX SQL Workshop, se si utilizza OCI Email Delivery, assicurarsi che il parametro p_from corrisponda a uno dei mittenti approvati. Ad esempio:
    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;
    /

    Per ulteriori informazioni, vedere APEX_MAIL.

  3. Per monitorare la consegna delle e-mail nell'istanza APEX:
    1. Connettersi ai servizi di amministrazione APEX.
    2. Aprire la pagina Gestisci istanza.
    3. Fare clic sul collegamento Coda posta nella sezione Gestisci metadati.
    In alternativa, eseguire una query sulle viste APEX_MAIL_QUEUE e APEX_MAIL_LOG utilizzando un client SQL.

Note per l'invio di e-mail da Oracle APEX

Fornisce note per l'utilizzo dei provider di posta elettronica in Oracle APEX da un'istanza di Autonomous Database.

Tenere presente quanto riportato di seguito quando si lavora con i provider di posta elettronica in Oracle APEX.

  • È previsto un limite predefinito di 1.000 e-mail per area di lavoro in un periodo di 24 ore. È possibile aggiornare o rimuovere questo limite in Oracle APEX Administration Services o impostando il parametro di istanza WORKSPACE_EMAIL_MAXIMUM. Se si utilizza il servizio OCI Email Delivery, il servizio potrebbe imporre limitazioni aggiuntive.
  • Quando si utilizza il servizio OCI Email Delivery, è necessario impostare un mittente approvato per tutti gli indirizzi "Da" possibili o che la posta venga rifiutata. Per ulteriori informazioni, vedere Gestione dei mittenti approvati.