Envoi de courriels sur Autonomous Database
Il existe plusieurs options d'envoi de courriel 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 d'envoi de courriels à l'aide deUTL_SMTP
sur Autonomous Database. - Envoyer un courriel à un fournisseur de messagerie sur une adresse privée
Description des étapes permettant d'envoyer un courriel à 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 d'e-mails à partir d'Autonomous Database à l'aide de DBMS_CLOUD_NOTIFICATION
Utilisez le packageDBMS_CLOUD_NOTIFICATION
pour envoyer des messages et interroger les résultats en tant qu'e-mail.
Rubrique parent : Envoi de courriels et de notifications sur Autonomous Database
Envoi de courriels avec le service Email Delivery sur Autonomous Database
Décrit les étapes à suivre pour envoyer des courriels à l'aide de UTL_SMTP
sur Autonomous Database.
Pour envoyer un courriel avec le service Oracle Cloud Infrastructure Email Delivery, procédez comme suit :
Pour plus d'informations sur UTL_SMTP
, reportez-vous à UTL_SMTP.
Reportez-vous à Notes sur le package PL/SQL pour Autonomous Database pour connaître les restrictions UTL_SMTP
avec Autonomous Database.
- Exemple de code d'envoi d'e-mail SMTP
Affiche un exemple de code d'envoi d'e-mail avecUTL_SMTP
sur Autonomous Database.
Rubrique parent : Envoi de courriels sur Autonomous Database
SMTP - Code exemple d'envoi d'e-mail
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 : indique l'adresse de connexion SMTP de l'étape 1 dans Envoyer un courriel avec le service Email Delivery sur Autonomous Database.
-
Nom utilisateur : indique le nom utilisateur d'informations d'identification SMTP de l'étape 2 dans Envoyer un courriel avec le service Email Delivery sur Autonomous Database.
-
passwd : indique le mot de passe des informations d'identification SMTP de l'étape 2 dans Envoyer un courriel avec le service Email Delivery sur Autonomous Database.
-
msg_from : indique l'un des expéditeurs approuvés de l'étape 3 dans Envoyer un courriel avec le service Email Delivery sur Autonomous Database.
Rubrique parent : Envoi d'e-mails avec Email Delivery Service sur Autonomous Database
Envoyer un courriel avec un fournisseur de messagerie sur une adresse privée
Décrit les étapes à suivre pour envoyer un courriel à 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 lorsque :
-
L'instance Autonomous Database source et le fournisseur de messagerie sont tous deux 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 se trouve 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 du VPN.
Pour envoyer des courriels à l'aide d'un fournisseur de messagerie, vous devez au préalable définir les règles entrantes et sortantes 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 (selon le port que vous utilisez).
-
Définissez une règle entrante dans la liste de sécurité de sous-réseau ou le groupe de sécurité réseau de l'hôte cible de sorte que le trafic 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 un courriel à partir d'un fournisseur de messagerie 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. Par conséquent, seuls les utilisateurs privilégiés peuvent y accéder et vous permettent de configurer des privilèges de niveau schéma pour accéder au contrôle des 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/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 cron ou d'automatisation PL/SQL. La transmission de mots de passe en texte clair est un problème de conformité 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 d'informations d'identification :
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;
Cette opération 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
est la connexion SMTP,SMTP_CRED
est le nom des informations d'identification etPLAIN
est le modèle d'authentification SMTP.
Pour plus d'informations, reportez-vous à UTL_SMTP.
Pour plus d'informations sur les restrictions applicables à UTL_SMTP
sur Autonomous Database, reportez-vous à Notes sur le package PL/SQL pour Autonomous Database.
Rubrique parent : Envoi de courriels sur Autonomous Database
Envoi d'e-mails à 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 par courriel à partir d'Autonomous Database
Vous pouvez utiliserDBMS_CLOUD_NOTIFICATION
pour envoyer des messages par courriel. - Envoi des 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 par courriel.
Rubrique parent : Envoi de courriels sur Autonomous Database
Envoi de messages par courriel à partir d'Autonomous Database
DBMS_CLOUD_NOTIFICATION
pour envoyer des messages par courriel.