Envío de correo electrónico en Autonomous Database
Hay varias opciones para enviar correos electrónicos en Autonomous 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 Autonomous Database
Describe los pasos para enviar correo electrónico medianteUTL_SMTP
en Autonomous Database. - 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 Autonomous Database mediante DBMS_CLOUD_NOTIFICATION
Utilice el paqueteDBMS_CLOUD_NOTIFICATION
para enviar mensajes y consultar resultados como correo electrónico.
Envío de correo electrónico con el servicio Email Delivery en Autonomous Database
Describe los pasos para enviar mensajes de correo electrónico mediante UTL_SMTP
en Autonomous 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 Notas del paquete PL/SQL para Autonomous Database para conocer las restricciones de UTL_SMTP
con Autonomous Database.
- 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 Database.
Tema principal: Envío de correo electrónico en Autonomous Database
Código de ejemplo de envío de correo electrónico SMTP
Muestra el código de ejemplo para enviar un correo electrónico con UTL_SMTP
en 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;
/
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 Autonomous Database.
-
username: especifica el nombre de usuario de credencial SMTP del paso 2 en Enviar correo electrónico con el servicio Email Delivery en Autonomous Database.
-
passwd: especifica la contraseña de credencial SMTP del paso 2 en Enviar correo electrónico con el servicio Email Delivery en Autonomous Database.
-
msg_from: especifica uno de los remitentes aprobados del paso 3 en Envío de correo electrónico con el servicio Email Delivery en Autonomous Database.
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 Autonomous Database 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 Autonomous Database). Por ejemplo, puede acceder a un proveedor de correo electrónico cuando:
-
Tanto la instancia de Autonomous Database de origen como el proveedor de correo electrónico están en la misma VCN de Oracle Cloud Infrastructure.
-
La instancia de Autonomous Database 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 Autonomous Database 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 Autonomous Database 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: Envío de correo electrónico en Autonomous Database
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 Autonomous Database para obtener información sobre las restricciones de UTL_SMTP
en Autonomous Database.
Tema principal: Envío de correo electrónico en Autonomous Database
Enviar correo electrónico desde Autonomous Database 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 Autonomous Database
Puede utilizarDBMS_CLOUD_NOTIFICATION
para enviar mensajes como correo electrónico. - Envío de resultados de consulta como correo electrónico desde Autonomous Database
Puede utilizar el paqueteDBMS_CLOUD_NOTIFICATION
para enviar los resultados de una consulta como correo electrónico.
Tema principal: Envío de correo electrónico en Autonomous Database
Enviar mensajes como correo electrónico desde Autonomous Database
DBMS_CLOUD_NOTIFICATION
para enviar mensajes como correo electrónico.