Enviar correo electrónico a base de datos de IA autónoma
Hay una serie de opciones para enviar correos electrónicos en Autonomous AI Database. También puede enviar mensajes de texto o la salida de una consulta SQL a un canal de Slack o MSTeams.
- Envío de correo electrónico con el servicio Email Delivery en una base de datos de IA autónoma
Describe los pasos para enviar correo electrónico medianteUTL_SMTP
en una base de datos de IA autónoma. - Envío de correo electrónico con un proveedor de correo electrónico en un punto final privado
Describe los pasos para enviar correo electrónico con un proveedor de correo electrónico que está en un punto final privado. - Uso de Objetos de Credenciales para Definir la Autenticación SMTP
Describe cómo transferir objetos de credenciales a las APIUTL_SMTP.SET_CREDENTIAL
. - Envío de correo electrónico desde una base de datos de IA autónoma mediante DBMS_CLOUD_NOTIFICATION
Utilice el paqueteDBMS_CLOUD_NOTIFICATION
para enviar mensajes y consultar los resultados como correo electrónico.
Enviar correo electrónico con el servicio Email Delivery en una base de datos de IA autónoma
Describe los pasos para enviar correo electrónico mediante UTL_SMTP
en Autonomous AI Database.
Para enviar correos electrónicos con el servicio Oracle Cloud Infrastructure Email Delivery:
Consulte UTL_SMTP para obtener información sobre UTL_SMTP
.
Consulte las Notas del paquete PL/SQL para la base de datos de IA autónoma para conocer las restricciones de UTL_SMTP
con la base de datos de IA autónoma.
- Código de ejemplo de envío de correo electrónico SMTP
Muestra el código de ejemplo para enviar correo electrónico conUTL_SMTP
en Autonomous AI Database.
Tema principal: Enviar correo electrónico en una base de datos de IA autónoma
Código de ejemplo de envío de correo electrónico SMTP
Muestra el código de ejemplo para enviar correo electrónico con UTL_SMTP
en 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;
/
Dónde:
-
mailhost: especifica el punto final de conexión SMTP del paso 1 en Enviar correo electrónico con el servicio Email Delivery en una base de datos de IA autónoma.
-
nombre de usuario: especifica el nombre de usuario de credencial SMTP del paso 2 en Enviar correo electrónico con el servicio Email Delivery en una base de datos de IA autónoma.
-
passwd: especifica la contraseña de credencial SMTP del paso 2 en Enviar correo electrónico con el servicio Email Delivery en una base de datos de IA autónoma.
-
msg_from: especifica uno de los remitentes aprobados del paso 3 en Enviar correo electrónico con el servicio Email Delivery en una base de datos de IA autónoma.
Enviar correo electrónico con un proveedor de correo electrónico en un punto final privado
Describe los pasos para enviar correo electrónico con un proveedor de correo electrónico que está en el punto final privado.
Para enviar correos electrónicos desde la base de datos de IA autónoma mediante un proveedor de correo electrónico en un punto final privado, se debe poder acceder al proveedor de correo electrónico desde la VCN de Oracle Cloud Infrastructure (punto final privado de la instancia de base de datos de IA autónoma). Por ejemplo, puede acceder a un proveedor de correo electrónico cuando:
-
Tanto la instancia de base de datos de IA autónoma de origen como el proveedor de correo electrónico están en la misma VCN de Oracle Cloud Infrastructure.
-
La instancia de base de datos de IA autónoma de origen y el proveedor de correo electrónico están en diferentes redes virtuales en la nube de Oracle Cloud Infrastructure emparejadas.
-
El proveedor de correo electrónico está en una red local que está conectada a la VCN de Oracle Cloud Infrastructure de la instancia de base de datos de IA autónoma de origen mediante FastConnect o VPN.
Como requisito previo, para enviar correo electrónico mediante un proveedor de correo electrónico, defina las siguientes reglas de entrada y salida:
-
Defina una regla de salida en la lista de seguridad de subred o el grupo de seguridad de red de la base de datos de origen de modo que el tráfico al host de destino se permita en el puerto 587 o el puerto 25 (en función del puerto que esté utilizando).
-
Defina una regla de entrada en la lista de seguridad de subred o el grupo de seguridad de red del host de destino de forma que se permita el tráfico desde la dirección IP de la instancia de base de datos de IA autónoma de origen al puerto 587 o el puerto 25 (en función del puerto que esté utilizando).
Para enviar correo electrónico desde un proveedor de correo electrónico en un punto final privado:
Tema principal: Enviar correo electrónico en una base de datos de IA autónoma
Uso de Objetos de Credenciales para Definir la Autenticación SMTP
Describe cómo transferir objetos de credencial a las API UTL_SMTP.SET_CREDENTIAL
.
El subprograma SET_CREDENTIAL
envía el comando AUTH para autenticarse en el servidor SMTP.
El subprograma UTL_SMTP.SET_CREDENTIAL
permite transferir objetos de credenciales para definir la autenticación SMTP. Los objetos de credenciales son objetos de esquema, por lo que solo pueden acceder a ellos los usuarios con privilegios y le permiten configurar privilegios de nivel de esquema para controlar el acceso a las credenciales. La transferencia de objetos de credenciales es una forma adecuada y segura de almacenar y gestionar el nombre de usuario, la contraseña o las claves para la autenticación.
El subprograma UTL_SMTP.SET_CREDENTIAL
es una alternativa segura y conveniente al subprograma UTL_SMTP.AUTH
.
Ejemplo
...
UTL_SMTP.AUTH (l_mail_conn, 'ocid1.user.oc1.username', 'xxxxxxxxxxxx', schemes => 'PLAIN');
...
Como se muestra en el ejemplo anterior, al llamar al subprograma AUTH
, debe transferir el nombre de usuario/contraseña en texto no cifrado como parte de los parámetros formales PL/SQL. Puede que necesite embeber el nombre de usuario/contraseña en varios scripts cron o automatización PL/SQL. La transferencia de contraseñas de texto no cifrado es un problema de conformidad que se aborda en el subprograma UTL_SMTP.SET_CREDENTIAL
.
Consulte Función y procedimiento AUTH para obtener más información.
Sintaxis de 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;
Ejemplo
-
Cree un objeto de credencial:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;
Esto crea un objeto de credencial que crea un par de nombre de usuario/contraseña almacenado.
Consulte CREATE_CREDENTIAL Procedure para obtener más información.
Consulte Especificación de Credenciales de Trabajo del Planificador para obtener más información.
-
Ejecute el procedimiento
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;
En este ejemplo, se envía el comando para autenticarse en el servidor SMTP. El servidor web necesita esta información para autorizar la solicitud. El valor
l_mail_conn
es la conexión SMTP,SMTP_CRED
es el nombre de las credenciales yPLAIN
es el esquema de autenticación SMTP.
Consulte UTL_SMTP para obtener más información.
Consulte las Notas del paquete PL/SQL para la base de datos de IA autónoma para obtener información sobre las restricciones para UTL_SMTP
en la base de datos de IA autónoma.
Tema principal: Enviar correo electrónico en una base de datos de IA autónoma
Enviar correo electrónico desde la base de datos de IA autónoma mediante DBMS_CLOUD_NOTIFICATION
Utilice el paquete DBMS_CLOUD_NOTIFICATION
para enviar mensajes y consultar los resultados como correo electrónico.
- Envío de mensajes como correo electrónico desde la base de datos de IA autónoma
Puede utilizarDBMS_CLOUD_NOTIFICATION
para enviar mensajes como correo electrónico. - Envío de resultados de consultas como correo electrónico desde la base de datos de IA autónoma
Puede utilizar el paqueteDBMS_CLOUD_NOTIFICATION
para enviar los resultados de una consulta como correo electrónico.
Tema principal: Enviar correo electrónico en una base de datos de IA autónoma
Enviar mensajes como correo electrónico desde la base de datos de IA autónoma
DBMS_CLOUD_NOTIFICATION
para enviar mensajes como correo electrónico.