Envoyer un courriel sur une base de données autonome avec intelligence artificielle

Il existe un certain nombre d'options pour l'envoi de courriels dans Autonomous AI Database. Vous pouvez également envoyer des messages texte ou la sortie d'une interrogation SQL à un canal Slack ou MSTeams.

Envoyer des courriels avec le service de transmission de messages sur une base de données autonome avec intelligence artificielle

Décrit les étapes d'envoi de courriel à l'aide de UTL_SMTP sur la base de données d'IA autonome.

Pour envoyer des courriels avec le service Oracle Cloud Infrastructure Email Delivery :

  1. Identifiez votre point d'extrémité de connexion SMTP pour le service de transmission de messages. Vous devrez peut-être vous abonner à des régions Oracle Cloud Infrastructure supplémentaires si le service de transmission de messages n'est pas disponible dans votre région courante.

    Par exemple, sélectionnez l'une des valeurs suivantes pour le point d'extrémité de connexion SMTP :

    • smtp.us-phoenix-1.oraclecloud.com
    • smtp.us-ashburn-1.oraclecloud.com
    • smtp.email.uk-london-1.oci.oraclecloud.com
    • smtp.email.eu-frankfurt-1.oci.oraclecloud.com
    Note

    Si le point d'extrémité de connexion SMTP se trouve dans une région différente de votre base de données d'intelligence artificielle autonome, vous devez créer une demande au soutien technique d'Oracle Cloud pour que les opérations en nuage activent le service de transmission de messages de cette région pour votre base de données d'intelligence artificielle autonome.

    Voir Configurer une connexion SMTP pour plus d'informations.

  2. Générez les données d'identification SMTP pour le service de transmission de messages. UTL_SMTP utilise des données d'identification pour l'authentification sur les serveurs de transmission de messages lors de l'envoi de courriels.
  3. Créez un expéditeur approuvé pour le service de courriel. Effectuez cette étape pour toutes les adresses de courriel que vous utilisez comme "From" avec UTL_SMTP.MAIL.

    Pour plus d'informations, voir Gestion des émetteurs approuvés.

  4. Autoriser l'accès SMTP pour l'utilisateur ADMIN en ajoutant une entrée de contrôle d'accès (ACE).

    Exemple :

    BEGIN
      -- Allow SMTP access for user ADMIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => ’www.us.example.com’,
        lower_port => 587,
        upper_port => 587,
        ace => xs$ace_type(privilege_list => xs$name_list('SMTP'),
                           principal_name => 'ADMIN',
                           principal_type => xs_acl.ptype_db));
    END;
    /
  5. Créez une procédure PL/SQL pour envoyer un courriel.

    Par exemple, voir l'exemple de code affiché sous Échantillon de code d'envoi de courriel SMTP.

  6. Envoyez un courriel de test à l'aide de la procédure PL/SQL que vous avez créée à l'étape 5.

    Exemple :

    execute send_mail('taylor@example.com', 'Email from Oracle Autonomous Database', 'Sent using UTL_SMTP');

Pour plus d'informations sur UTL_SMTP, voir UTL_SMTP.

Voir Notes de l'ensemble PL/SQL pour Autonomous AI Database pour connaître les restrictions UTL_SMTP associées à Autonomous AI Database.

Code d'exemple de courriel d'envoi SMTP

Affiche un exemple de code pour l'envoi de courriels avec UTL_SMTP dans Autonomous AI Database.

CREATE OR REPLACE PROCEDURE SEND_MAIL (
  msg_to varchar2,
  msg_subject varchar2,
  msg_text varchar2 ) 
IS

  mail_conn utl_smtp.connection;
  username varchar2(1000):= 'ocid1.user.oc1.username';
  passwd varchar2(50):= 'password';
  msg_from varchar2(50) := 'adam@example.com';
  mailhost VARCHAR2(50) := 'smtp.us-ashburn-1.oraclecloud.com';

BEGIN
  mail_conn := UTL_smtp.open_connection(mailhost, 587);
  utl_smtp.starttls(mail_conn);
  
  UTL_SMTP.AUTH(mail_conn, username, passwd, schemes => 'PLAIN');
  
  utl_smtp.mail(mail_conn, msg_from);
  utl_smtp.rcpt(mail_conn, msg_to);
  
  UTL_smtp.open_data(mail_conn);
 
  UTL_SMTP.write_data(mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || UTL_TCP.crlf);
  UTL_SMTP.write_data(mail_conn, 'To: ' || msg_to || UTL_TCP.crlf);
  UTL_SMTP.write_data(mail_conn, 'From: ' || msg_from || UTL_TCP.crlf);
  UTL_SMTP.write_data(mail_conn, 'Subject: ' || msg_subject || UTL_TCP.crlf);
  UTL_SMTP.write_data(mail_conn, 'Reply-To: ' || msg_to || UTL_TCP.crlf || UTL_TCP.crlf);
  UTL_SMTP.write_data(mail_conn, msg_text || UTL_TCP.crlf || UTL_TCP.crlf);
  
  UTL_smtp.close_data(mail_conn);
  UTL_smtp.quit(mail_conn);

EXCEPTION
  WHEN UTL_smtp.transient_error OR UTL_smtp.permanent_error THEN
    UTL_smtp.quit(mail_conn);
    dbms_output.put_line(sqlerrm);
  WHEN OTHERS THEN
    UTL_smtp.quit(mail_conn);
    dbms_output.put_line(sqlerrm);
END;
/

Où :

Envoyer un courriel avec un fournisseur de courriel sur un point d'extrémité privé

Décrit les étapes d'envoi de courriel avec un fournisseur de messagerie qui se trouve sur un point d'extrémité privé.

Pour envoyer des courriels depuis Autonomous AI Database à l'aide d'un fournisseur de courriel sur un point d'extrémité privé, ce fournisseur doit être accessible à partir du VCN Oracle Cloud Infrastructure (point d'extrémité privé de l'instance Autonomous AI Database). Par exemple, vous pouvez accéder à un fournisseur de messagerie lorsque :

  • L'instance de base de données d'IA autonome source et le fournisseur de courriel se trouvent tous les deux dans le même VCN Oracle Cloud Infrastructure.

  • L'instance de base de données Autonomous AI Database source et le fournisseur de courriel se trouvent dans différents réseaux en nuage virtuels Oracle Cloud Infrastructure appariés.

  • Le fournisseur de courriel se trouve sur un réseau sur place qui est connecté au VCN Oracle Cloud Infrastructure de l'instance de base de données d'intelligence artificielle autonome source à l'aide de FastConnect ou d'un RPV.

Pour envoyer un courriel à l'aide d'un fournisseur de messagerie, définissez les règles de trafic entrant et sortant suivantes :

  • Définissez une règle de trafic sortant dans la liste de sécurité du sous-réseau ou le groupe de sécurité de réseau de la base de données source afin que le trafic vers l'hôte cible soit autorisé sur le port 587 ou le port 25 (selon le port que vous utilisez).

  • Définissez une règle de trafic entrant dans la liste de sécurité du sous-réseau ou le groupe de sécurité de réseau de l'hôte cible de sorte que le trafic entre l'adresse IP de l'instance de base de données Autonomous AI Database source et le port 587 ou 25 soit autorisé (selon le port que vous utilisez).

Pour envoyer un courriel à partir d'un fournisseur de courriel sur un point d'extrémité privé :

  1. Autoriser l'accès SMTP pour l'utilisateur ADMIN en ajoutant une entrée de contrôle d'accès (ACE).

    Exemple :

    -- Create an Access Control List for the host
    BEGIN
       DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
             host => 'www.example.com',
             lower_port => 587,
             upper_port => 587,
             ace => xs$ace_type(privilege_list => xs$name_list('SMTP'),
                                 principal_name => 'ADMIN',
                                 principal_type => xs_acl.ptype_db),
             private_target => TRUE);
    END;
    /
    Note

    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE ne prend en charge qu'un seul nom d'hôte pour le paramètre host (sur un point d'extrémité privé, à l'aide d'une adresse IP, d'une adresse IP SCAN ou d'un nom d'hôte SCAN n'est pas pris en charge).

    Si vous réglez ROUTE_OUTBOUND_CONNECTIONS à PRIVATE_ENDPOINT, le réglage du paramètre private_target à TRUE n'est pas requis dans cette API. Pour plus d'informations, voir Sécurité améliorée pour les connexions sortantes à l'aide de points d'extrémité privés.

  2. Créez une procédure PL/SQL pour envoyer un courriel.
  3. Envoyez un courriel de test à l'aide de la procédure PL/SQL que vous avez créée à l'étape 2.

    Exemple :

    execute send_mail('taylor@example.com', 'Email from Oracle Autonomous Database', 'Sent using private email provider');

Utiliser des objets de données d'identification pour définir l'authentification SMTP

Décrit comment transmettre des objets de données d'identification aux API UTL_SMTP.SET_CREDENTIAL.

Le sous-programme SET_CREDENTIAL envoie la commande AUTH pour l'authentification au serveur SMTP.

Le sous-programme UTL_SMTP.SET_CREDENTIAL vous permet de transmettre des objets de données d'identification pour définir l'authentification SMTP. Les objets de données d'identification sont des objets de schéma. Par conséquent, ils ne sont accessibles que par des utilisateurs dotés de privilèges et vous permettent de configurer des privilèges au niveau du schéma pour contrôler les données d'identification. La transmission d'objets de données d'identification est un moyen approprié et sécurisé de stocker et de gérer le nom d'utilisateur/mot de passe/clés pour l'authentification.

Le sous-programme UTL_SMTP.SET_CREDENTIAL est une alternative sécurisée et pratique au sous-programme UTL_SMTP.AUTH.

Exemple


...
UTL_SMTP.AUTH (l_mail_conn, 'ocid1.user.oc1.username', 'xxxxxxxxxxxx', schemes => 'PLAIN');
...

Comme indiqué dans l'exemple ci-dessus, lorsque vous appelez le sous-programme AUTH, vous devez transmettre le nom utilisateur/mot de passe en texte clair dans le cadre des paramètres formels PL/SQL. Vous devrez peut-être intégrer le nom utilisateur/mot de passe dans divers scripts d'automatisation PL/SQL ou cron. La transmission de mots de passe en texte clair est un problème de conformité qui est traité dans le sous-programme UTL_SMTP.SET_CREDENTIAL.

Pour plus d'informations, voir Fonction et procédure AUTH.

Syntaxe UTL_SMTP.SET_CREDENTIAL

PROCEDURE UTL_SMTP.SET_CREDENTIAL (
    c          IN OUT NOCOPY connection,
    credential IN            VARCHAR2,
    schemes    IN            VARCHAR2 DEFAULT NON_CLEARTEXT_PASSWORD_SCHEMES
);

FUNCTION UTL_SMTP.SET_CREDENTIAL (
    c          IN OUT NOCOPY connection,
    credential IN            VARCHAR2,
    schemes    IN            VARCHAR2 DEFAULT NON_CLEARTEXT_PASSWORD_SCHEMES)
    RETURN reply;

Exemple

  • Créez un objet de données d'identification :

    BEGIN DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'HTTP_CRED',
        username        => 'web_app_user',
        password        => '<password>' );
    END;

    Cela crée un objet de données d'identification qui crée une paire nom utilisateur/mot de passe stocké.

    Pour plus d'informations, voir ProcédureCREATE_CREDENTIAL.

    Pour plus d'informations, voir Spécification des données d'identification de la tâche du programmateur.

  • Exécutez la procédure UTL_SMTP.SET_CREDENTIAL :

    DECLARE
          l_mail_conn UTL_SMTP.CONNECTION;
        BEGIN 
          l_mail_conn := UTL_SMTP.OPEN_CONNECTION('smtp.example.com', 587);
          UTL_SMTP.SET_CREDENTIAL(l_mail_conn, 'SMTP_CRED', SCHEMES => 'PLAIN');
          ...
    END;
    

    Cet exemple envoie la commande d'authentification au serveur SMTP. Le serveur Web a besoin de ces informations pour autoriser la demande. La valeur l_mail_conn est la connexion SMTP, SMTP_CRED est le nom des données d'identification et PLAIN est le modèle d'authentification SMTP.

Pour plus d'informations, voir UTL_SMTP.

Voir Notes de l'ensemble PL/SQL pour Autonomous AI Database pour plus d'informations sur les restrictions pour UTL_SMTP pour Autonomous AI Database.

Envoyer un courriel à partir d'une base de données d'intelligence artificielle autonome à l'aide de DBMS_CLOUD_NOTIFICATION

Utilisez l'ensemble DBMS_CLOUD_NOTIFICATION pour envoyer des messages et les résultats de l'interrogation sous forme de courriel.

Envoyer des messages par courriel à partir d'une base de données autonome d'IA

Vous pouvez utiliser DBMS_CLOUD_NOTIFICATION pour envoyer des messages sous forme de courriel.
  1. Identifiez votre point d'extrémité de connexion SMTP pour le service de transmission de messages. Vous devrez peut-être vous abonner à des régions Oracle Cloud Infrastructure supplémentaires si le service de transmission de messages n'est pas disponible dans votre région courante.

    Par exemple, sélectionnez l'une des valeurs suivantes pour le point d'extrémité de connexion SMTP :

    • smtp.us-phoenix-1.oraclecloud.com
    • smtp.us-ashburn-1.oraclecloud.com
    • smtp.email.uk-london-1.oci.oraclecloud.com
    • smtp.email.eu-frankfurt-1.oci.oraclecloud.com

    Voir Configurer une connexion SMTP pour plus d'informations.

  2. Générez les données d'identification SMTP pour le service de transmission de messages. UTL_SMTP utilise des données d'identification pour l'authentification sur les serveurs de transmission de messages lors de l'envoi de courriels.
  3. Créez un expéditeur approuvé pour le service de courriel. Effectuez cette étape pour toutes les adresses de courriel que vous utilisez comme "From" avec UTL_SMTP.MAIL.

    Pour plus d'informations, voir Gestion des émetteurs approuvés.

  4. Autoriser l'accès SMTP pour l'utilisateur ADMIN en ajoutant une entrée de contrôle d'accès (ACE).

    Exemple :

    BEGIN
      -- Allow SMTP access for user ADMIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => ’www.us.example.com’,
        lower_port => 587,
        upper_port => 587,
        ace => xs$ace_type(privilege_list => xs$name_list('SMTP'),
                           principal_name => 'ADMIN',
                           principal_type => xs_acl.ptype_db));
    END;
    /
  5. Créez un objet de données d'identification et utilisez DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE pour envoyer un message par courriel.
    BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'EMAIL_CRED',
            username        => 'username',
            password        => 'password'
       );
       END;
    /
    BEGIN
       DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE(
            provider        => 'email',
            credential_name => 'EMAIL_CRED',
            message         => 'Subject content',
            params          => json_object('recipient' value  'mark@example.com, suresh@example.com',
                                           'to_cc'  value 'nicole@example.com, jordan@example.com',
                                           'to_bcc' value 'manisha@example.com',
                                           'subject' value 'Test subject',
                                           'smtp_host' value 'smtp.email.example.com',
                                           'sender'    value  'approver_sender@example.com' )
       );
       END;
    /

    Utilisez le paramètre params pour spécifier l'expéditeur, smtp_host, l'objet, le destinataire et les destinataires d'une carte de crédit ou d'une carte Cci dans les valeurs string.

    • expéditeur : Indique l'ID courriel de l'expéditeur approuvé à l'étape 3.

    • smtp_host : Spécifie le nom d'hôte SMTP de l'étape 2.

    • subject (Objet) : Indique l'objet du courriel.

    • bénéficiaire : Indique les ID courriel des destinataires. Utilisez une virgule entre les ID courriel lorsqu'il y a plusieurs destinataires.

    • to_cc : Indique les ID courriel qui reçoivent une copie conforme du courriel. Utilisez une virgule entre les ID courriel lorsqu'il y a plusieurs destinataires de carte de crédit.

    • to_bcc : Indique les ID courriel qui reçoivent un Cci du courriel. Utilisez une virgule entre les ID courriel lorsqu'il y a plusieurs destinataires en Cci.

    Pour plus d'informations, voir ProcédureSEND_MESSAGE.

Envoyer les résultats d'interrogation par courriel à partir d'une base de données autonome d'intelligence artificielle

Vous pouvez utiliser l'ensemble DBMS_CLOUD_NOTIFICATION pour envoyer les résultats d'une interrogation par courriel.

Pour utiliser DBMS_CLOUD_NOTIFICATION pour envoyer du courrier :

  1. Identifiez votre point d'extrémité de connexion SMTP pour le service de transmission de messages. Vous devrez peut-être vous abonner à des régions Oracle Cloud Infrastructure supplémentaires si le service de transmission de messages n'est pas disponible dans votre région courante.

    Par exemple, sélectionnez l'une des valeurs suivantes pour le point d'extrémité de connexion SMTP :

    • smtp.us-phoenix-1.oraclecloud.com
    • smtp.us-ashburn-1.oraclecloud.com
    • smtp.email.uk-london-1.oci.oraclecloud.com
    • smtp.email.eu-frankfurt-1.oci.oraclecloud.com

    Voir Configurer une connexion SMTP pour plus d'informations.

  2. Générez les données d'identification SMTP pour le service de transmission de messages. UTL_SMTP utilise des données d'identification pour l'authentification sur les serveurs de transmission de messages lors de l'envoi de courriels.
  3. Créez un expéditeur approuvé pour le service de courriel. Effectuez cette étape pour toutes les adresses de courriel que vous utilisez comme "From" avec UTL_SMTP.MAIL.

    Pour plus d'informations, voir Gestion des émetteurs approuvés.

  4. Autoriser l'accès SMTP pour l'utilisateur ADMIN en ajoutant une entrée de contrôle d'accès (ACE).

    Exemple :

    BEGIN
      -- Allow SMTP access for user ADMIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => ’www.us.example.com’,
        lower_port => 587,
        upper_port => 587,
        ace => xs$ace_type(privilege_list => xs$name_list('SMTP'),
                           principal_name => 'ADMIN',
                           principal_type => xs_acl.ptype_db));
    END;
    /
  5. Créez un objet de données d'identification et utilisez DBMS_CLOUD_NOTIFICATION.SEND_DATA pour envoyer la sortie d'une interrogation sous forme de courriel.
    BEGIN
       DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'EMAIL_CRED',
            username        => 'username',
            password        => 'password'
       );
       END;
    /
    BEGIN
       DBMS_CLOUD_NOTIFICATION.SEND_DATA(
            provider        => 'email',
            credential_name => 'EMAIL_CRED',
            query           => 'SELECT tablespace_name FROM dba_tablespaces',
            params          => json_object('recipient' value  'mark@example.com, suresh@example.com',
                                           'to_cc'  value 'nicole@example.com1, jordan@example.com',
                                           'to_bcc' value 'manisha@example.com',
                                           'subject' value 'Test subject',
                                           'type' value 'json',
                                           'title' value 'mytitle',
                                           'message' value 'This is the message',
                                           'smtp_host' value 'smtp.email.example.com',
                                           'sender'    value  'approver_sender@example.com' )
       );
       END;
    /
    Utilisez le paramètre params pour spécifier l'expéditeur, smtp_host, l'objet, le destinataire, les destinataires d'une carte de crédit ou de Cci, le message, le type de données et le titre dans les valeurs String.
    • expéditeur : Indique l'ID courriel de l'expéditeur approuvé à l'étape 3.

    • smtp_host : Spécifie le nom d'hôte SMTP de l'étape 2.

    • subject (Objet) : Indique l'objet du courriel. La taille maximale est de 100 caractères.

    • bénéficiaire : Indique les ID courriel des destinataires. Utilisez une virgule entre les ID courriel lorsqu'il y a plusieurs destinataires.

    • to_cc : Indique les ID courriel qui reçoivent une copie conforme du courriel. Utilisez une virgule entre les ID courriel lorsqu'il y a plusieurs destinataires de carte de crédit.

    • to_bcc : Indique les ID courriel qui reçoivent un Cci du courriel. Utilisez une virgule entre les ID courriel lorsqu'il y a plusieurs destinataires en Cci.

    • message : Indique le texte du message.

    • type : Spécifie le format de sortie au format CSV ou JSON.

    • title : Spécifie le titre du fichier joint de la sortie SQL. Le titre ne doit contenir que des lettres, des chiffres, des traits de soulignement, des tirets ou des points en tant que caractères dans sa valeur, car il est utilisé pour générer un nom de fichier.

    La taille maximale des messages à utiliser avec DBMS_CLOUD_NOTIFICATION.SEND_DATA pour les avis par courriel est de 32k octets.

    Pour plus d'informations, voir ProcédureSEND_DATA.