Envoi de courriels à partir d'Oracle APEX

Vous pouvez utiliser le package APEX_MAIL pour envoyer des courriels à partir des applications Oracle APEX déployées dans Autonomous Database.

Avant d'utiliser APEX_MAIL, vous devez configurer un serveur SMTP qui transmettra les courriels à partir d'Oracle APEX. Oracle APEX sur Autonomous Database prend en charge le service Oracle Cloud Infrastructure Email Delivery ainsi que les fournisseurs de messagerie tiers.

Configurer OCI Email Delivery

Votre instance Oracle APEX peut utiliser le service OCI Email Delivery pour envoyer des courriels à partir des applications APEX.

Pour configurer la fonctionnalité APEX_MAIL afin d'utiliser le service OCI Email Delivery, procédez comme suit :

  1. Identifiez l'adresse de connexion SMTP pour Email Delivery. Vous configurerez cette adresse en tant qu'hôte SMTP dans votre instance APEX à l'étape 4. Vous devrez peut-être vous abonner à des régions Oracle Cloud Infrastructure supplémentaires si Email Delivery n'est pas disponible dans votre région actuelle. Pour plus d'informations, reportez-vous à Configuration de la connexion SMTP.
  2. Générez des informations d'identification SMTP pour Email Delivery. Votre instance APEX utilise les informations d'identification pour s'authentifier auprès des serveurs Email Delivery lorsque vous envoyez des courriels. Pour plus d'informations, reportez-vous à Création d'informations d'identification SMTP.
  3. Créez un expéditeur approuvé pour Email Delivery. Vous devez effectuer cette étape pour toutes les adresses électroniques utilisées pour la livraison avec des appels APEX_MAIL.SEND, comme adresse électronique d'expéditeur dans vos applications ou dans le paramètre d'instance SMTP_FROM. Pour plus d'informations, reportez-vous à la rubrique Gestion des expédititeurs approuvés.
  4. Connectez-vous à l'instance Autonomous Database en tant qu'utilisateur ADMIN à l'aide d'un client SQL et configurez les paramètres SMTP suivants avec APEX_INSTANCE_ADMIN.SET_PARAMETER :
    • SMTP_HOST_ADDRESS : spécifie l'adresse de connexion SMTP de l'étape 1.
    • SMTP_USERNAME : indique le nom utilisateur de l'information d'identification SMTP de l'étape 2
    • SMTP_PASSWORD : indique le mot des informations d'identification SMTP de l'étape 2.
    • SMTP_HOST_PORT : conserver la valeur par défaut de ce paramètre (587)
    • SMTP_TLS_MODE : conserver la valeur par défaut de ce paramètre (STARTTLS)
    Exemple :
    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;
    /

    Pour plus d'informations, reportez-vous à APEX_INSTANCE_ADMIN.

Pour plus d'informations, reportez-vous à Présentation d'Email Delivery.

Configuration du fournisseur de messagerie tiers

Votre instance Oracle APEX peut utiliser des fournisseurs de messagerie tiers pour envoyer des courriels à partir d'applications APEX.

Avant de configurer un fournisseur de messagerie tiers dans APEX, assurez-vous que les prérequis suivants sont remplis :

  • Votre instance Autonomous Database doit être configurée pour utiliser une adresse privée.
  • L'adresse SMTP du fournisseur de messagerie (port 25 ou 587) doit être accessible à partir du réseau cloud virtuel (VCN) et du sous-réseau sur lequel votre instance Autonomous Database est provisionnée.

Pour plus d'informations, reportez-vous à la section Configure Network Access with Private Endpoints.

Une fois les prérequis ci-dessus remplis :

  1. Ajoutez la liste de contrôle d'accès suivante pour l'adresse SMTP en tant qu'ADMIN (notez le paramètre 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;
    /
    Remarque

    Si vous définissez la propriété de base de données ROUTE_OUTBOUND_CONNECTIONS sur PRIVATE_ENDPOINT, vous n'avez pas besoin de définir de listes de contrôle d'accès pour chaque adresse SMTP afin d'y accéder à partir d'APEX. Pour plus d'informations, reportez-vous à Sécurité améliorée pour les connexions sortantes avec des adresses privées.
  2. Connectez-vous à Autonomous Database en tant qu'utilisateur ADMIN via un client SQL et configurez le paramètre SMTP suivant à l'aide de APEX_INSTANCE_ADMIN.SET_PARAMETER. Si votre fournisseur de messagerie tiers ne nécessite pas d'authentification, ignorez les paramètres SMTP_USERNAME et SMTP_PASSWORD.
    • SMTP_HOST_ADDRESS : spécifie l'adresse de connexion SMTP de l'étape 1.
    • Les valeurs valides pour le paramètre SMTP_HOST_PORT sont 25 ou 587
    • Définissez la valeur du paramètre SMTP_TLS_MODE sur Y.

    Par exemple :

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

    Pour plus d'informations, reportez-vous à APEX_INSTANCE_ADMIN.

Valider la configuration de courriel

Affiche les étapes permettant de confirmer que votre fournisseur de messagerie est prêt à être utilisé avec APEX_MAIL.

  1. Validez les paramètres de configuration des e-mails à l'aide d'un client SQL en tant qu'administrateur :
    BEGIN
      APEX_INSTANCE_ADMIN.VALIDATE_EMAIL_CONFIG;
    END;
    /

    Si des erreurs sont signalées (par exemple, "ORA-29279: SMTP permanent error: 535 Authentication credentials invalid"), ajustez les paramètres SMTP ou la configuration du réseau cloud virtuel (VCN) et répétez l'étape de validation.

    Pour plus d'informations, reportez-vous à APEX_INSTANCE_ADMIN.

  2. Envoyez un courriel de test à l'aide d'APEX SQL Workshop. Si vous utilisez OCI Email Delivery, assurez-vous que le paramètre p_from correspond à l'un des expéditeurs approuvés. Par exemple :
    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;
    /

    Pour plus d'informations, reportez-vous à APEX_MAIL.

  3. Pour surveiller la distribution des courriels dans votre instance APEX, procédez comme suit :
    1. Connectez-vous aux services d'administration APEX.
    2. Ouvrez la page Gérer une instance.
    3. Cliquez sur le lien File d'attente des courriels dans la section Gérer les métadonnées.
    Sinon, interrogez les vues APEX_MAIL_QUEUE et APEX_MAIL_LOG à l'aide d'un client SQL.

Remarques concernant l'envoi de courriels à partir d'Oracle APEX

Fournit des notes sur l'utilisation des fournisseurs de messagerie dans Oracle APEX à partir d'une instance Autonomous Database.

Lorsque vous utilisez des fournisseurs de messagerie dans Oracle APEX, tenez compte des points suivants :

  • Il existe une limite par défaut de 1 000 courriels par espace de travail sur une période de 24 heures. Vous pouvez mettre à jour ou enlever cette limite dans les services d'administration Oracle APEX ou en définissant le paramètre d'instance WORKSPACE_EMAIL_MAXIMUM. Si vous utilisez le service OCI Email Delivery, ce service peut imposer des limites supplémentaires.
  • Lors de l'utilisation du service OCI Email Delivery, un expéditeur approuvé doit être configuré pour toutes les adresses d'expéditeur possibles ou le courriel sera rejeté. Pour plus d'informations, reportez-vous à la rubrique Gestion des expédititeurs approuvés.