Envoi de courriels sur Autonomous Database
Plusieurs options sont disponibles pour l'envoi de courriels sur Autonomous Database. Vous pouvez également envoyer des messages texte ou la sortie d'une requête SQL à un canal Slack ou MSTeams.
- Envoi de courriels avec le service Email Delivery sur Autonomous Database
Décrit les étapes à suivre pour envoyer des courriels à l'aide d'UTL_SMTP
sur Autonomous Database. - Envoi de courriels avec un fournisseur de messagerie situé sur une adresse privée
Décrit les étapes d'envoi de courriels avec un fournisseur de messagerie situé sur une adresse privée. - Utilisation d'objets d'informations d'identification pour définir l'authentification SMTP
Décrit comment transmettre des objets d'informations d'identification aux APIUTL_SMTP.SET_CREDENTIAL
. - Envoi de courriels à partir d'Autonomous Database à l'aide de DBMS_CLOUD_NOTIFICATION
Utilisez le packageDBMS_CLOUD_NOTIFICATION
pour envoyer des messages et interroger les résultats par courriel.
Rubrique parent : Envoi de courriels et de notifications sur Autonomous Database
Envoyer des courriels avec le service Email Delivery sur Autonomous Database
Décrit les étapes à suivre pour envoyer des courriels à l'aide d'UTL_SMTP
sur Autonomous Database.
Pour envoyer des courriels avec le service Oracle Cloud Infrastructure Email Delivery, procédez comme suit :
Reportez-vous à UTL_SMTP pour plus d'informations sur UTL_SMTP
.
Reportez-vous à Notes sur le package PL/SQL pour Autonomous Database pour connaître les restrictions relatives à UTL_SMTP
avec Autonomous Database.
- Exemple de code d'envoi de courriel SMTP
Affiche un exemple de code pour l'envoi de courriel avecUTL_SMTP
sur Autonomous Database.
Rubrique parent : Envoi de courriels sur Autonomous Database
Exemple d'envoi de courriel SMTP
Affiche un exemple de code pour l'envoi de courriels avec UTL_SMTP
sur Autonomous 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ù :
-
mailhost : permet d'indiquer l'adresse de connexion SMTP de l'étape 1 dans envoi de courriels avec le service Email Delivery sur Autonomous Database.
-
username : permet d'indiquer le nom utilisateur des informations d'identification SMTP de l'étape 2 dans envoi de courriels avec le service Email Delivery sur Autonomous Database.
-
passwd : permet d'indiquer le mot de passe des informations d'identification SMTP de l'étape 2 dans Envoi de courriels avec le service Email Delivery sur Autonomous Database.
-
msg_from : permet d'indiquer l'un des envois approuvés de l'étape 3 dans envoi de courriel au service Email Delivery sur Autonomous Database.
Envoi de courriels avec un fournisseur de messagerie sur une adresse privée
Décrit les étapes d'envoi de courriels avec un fournisseur de messagerie situé sur une adresse privée.
Pour envoyer des courriels à partir d'Autonomous Database à l'aide d'un fournisseur de messagerie sur une adresse privée, le fournisseur de messagerie doit être accessible à partir du VCN Oracle Cloud Infrastructure (adresse privée de l'instance Autonomous Database). Par exemple, vous pouvez accéder à un fournisseur de messagerie dans les cas suivants :
-
L'instance Autonomous Database source et le fournisseur de messagerie se trouvent dans le même VCN Oracle Cloud Infrastructure.
-
L'instance Autonomous Database source et le fournisseur de messagerie se trouvent dans différents réseaux cloud virtuels Oracle Cloud Infrastructure couplés.
-
Le fournisseur de messagerie est sur un réseau sur site connecté au réseau VCN Oracle Cloud Infrastructure de l'instance Autonomous Database source à l'aide de FastConnect ou d'un VPN.
Pour envoyer des courriels à l'aide d'un fournisseur de messagerie, vous devez d'abord définir les règles d'entrée et de sortie suivantes :
-
Définissez une règle sortante dans la liste de sécurité de sous-réseau ou le groupe de sécurité réseau de la base de données source de sorte que le trafic vers l'hôte cible soit autorisé sur le port 587 ou le port 25 (en fonction du port que vous utilisez).
-
Définissez une règle entrante dans la liste de sécurité réseau ou le groupe de sécurité réseau de l'hôte cible de sorte que le trafic provenant de l'adresse IP de l'instance Autonomous Database source vers le port 587 ou le port 25 soit autorisé (en fonction du port que vous utilisez).
Pour envoyer des courriels à partir d'un fournisseur de messagerie situé sur une adresse privée, procédez comme suit :
Rubrique parent : Envoi de courriels sur Autonomous Database
Utiliser des objets d'informations d'identification pour définir l'authentification SMTP
Explique comment transmettre des objets d'informations d'identification aux API UTL_SMTP.SET_CREDENTIAL
.
Le sous-programme SET_CREDENTIAL
envoie la commande AUTH pour s'authentifier auprès du serveur SMTP.
Le sous-programme UTL_SMTP.SET_CREDENTIAL
vous permet de transmettre des objets d'informations d'identification pour définir l'authentification SMTP. Les objets d'informations d'identification sont des objets de schéma. Ils ne sont donc accessibles qu'aux utilisateurs dotés de privilèges et vous permettent de configurer des privilèges de niveau schéma pour contrôler les informations d'identification. La transmission d'objets d'informations d'identification est un moyen approprié et sécurisé de stocker et de gérer le nom utilisateur, le mot de passe et les 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 clair dans le cadre des paramètres formels PL/SQL. Vous devrez peut-être intégrer le nom utilisateur/mot de passe dans différents scripts cron ou d'automatisation PL/SQL. La transmission de mots de passe en clair est un problème de conformité résolu dans le sous-programme UTL_SMTP.SET_CREDENTIAL
.
Pour plus d'informations, reportez-vous à 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 d'informations d'identification :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;
Cela crée un objet d'informations d'identification qui crée une paire nom utilisateur/mot de passe stockée.
Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
Pour plus d'informations, reportez-vous à Spécification des informations d'identification de travail du planificateur.
-
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
correspond à la connexion SMTP,SMTP_CRED
au nom des informations d'identification etPLAIN
au modèle d'authentification SMTP.
Pour plus d'informations, reportez-vous à UTL_SMTP.
Pour plus d'informations sur les restrictions relatives à UTL_SMTP
sur Autonomous Database, reportez-vous à Notes de package PL/SQL pour Autonomous Database.
Rubrique parent : Envoi de courriels sur Autonomous Database
Envoi de courriels à partir d'Autonomous Database à l'aide de DBMS_CLOUD_NOTIFICATION
Utilisez le package DBMS_CLOUD_NOTIFICATION
pour envoyer des messages et interroger les résultats par courriel.
- Envoi de messages sous forme de courriel à partir d'Autonomous Database
Vous pouvez utiliserDBMS_CLOUD_NOTIFICATION
pour envoyer des messages sous forme de courriel. - Envoi de résultats de requête par courriel à partir d'Autonomous Database
Vous pouvez utiliser le packageDBMS_CLOUD_NOTIFICATION
pour envoyer les résultats d'une requête sous forme de courriel.
Rubrique parent : Envoi de courriels sur Autonomous Database
Envoi de messages en tant que courriels à partir d'Autonomous Database
DBMS_CLOUD_NOTIFICATION
pour envoyer des messages sous forme de courriel.