Envío de correo electrónico en Autonomous Database
Hay una serie de opciones para enviar correo electrónico en Autonomous Database. También puede enviar mensajes de texto o la salida de una consulta SQL a un canal Slack o MSTeams.
- Envío de correo electrónico con el servicio Email Delivery en Autonomous Database
Se describen 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 credencial para definir la autenticación SMTP
Describe cómo transferir objetos de credencial a las API deUTL_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 los resultados como correo electrónico.
Envío de correo electrónico con el servicio Email Delivery en Autonomous Database
Se describen los pasos para enviar correo electrónico mediante UTL_SMTP
en Autonomous Database.
El servicio Email Delivery de Oracle Cloud Infrastructure es el único proveedor de correo electrónico soportado para los puntos finales SMTP públicos.
Para enviar correo electrónico con el servicio Email Delivery de Oracle Cloud Infrastructure:
Consulte UTL_SMTP para obtener información sobre UTL_SMTP
.
Consulte Notas sobre paquetes PL/SQL para Autonomous Database para obtener información sobre las restricciones 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 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;
/
Donde:
-
mailhost: especifica el punto final de conexión SMTP del paso 1 en Envío de correo electrónico con el servicio Email Delivery en Autonomous Database.
-
username: especifica el nombre de usuario de la credencial SMTP del paso 2 en Envío de correo electrónico con el servicio Email Delivery en Autonomous Database.
-
passwd: especifica la contraseña de la credencial SMTP del paso 2 en Envío de correo electrónico con el servicio Email Delivery en Autonomous Database.
-
msg_from: especifica uno de los remitentes aprobados del paso 3 en Send Email con el servicio Email Delivery 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.
Para enviar correo electrónico desde Autonomous Database mediante un proveedor de correo electrónico en un punto final privado, se debe acceder al proveedor de correo electrónico desde la VCN de Oracle Cloud Infrastructure (el punto final privado de la instancia de Autonomous Database). Por ejemplo, puede acceder a un proveedor de correo electrónico cuando:
-
La instancia de Autonomous Database de origen y 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 distintas Oracle Cloud Infrastructure VCN asociadas.
-
The email provider is on an on-premises network that is connected to the source Autonomous Database instance's Oracle Cloud Infrastructure VCN using FastConnect or VPN.
Como requisito, 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 para que se permita el tráfico al host de destino en el puerto 587 o el puerto 25 (dependiendo 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 para que se permita el tráfico desde la dirección IP de la instancia de Autonomous Database de origen hasta el puerto 587 o el puerto 25 (dependiendo 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 credencial para definir la autenticación SMTP
Describe cómo transferir objetos de credenciales a las API de 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 los usuarios con privilegios pueden acceder a ellos y permiten configurar privilegios de nivel de esquema para acceder al control de credenciales. La transferencia de objetos de credenciales es una forma adecuada y segura de almacenar y gestionar nombres de usuario, contraseñas y 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. Es posible que necesite incrustar el nombre de usuario/contraseña en varios scripts cron o de 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 Procedimiento CREATE_CREDENTIAL 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 Notas sobre paquetes PL/SQL para Autonomous Database para obtener información sobre las restricciones para UTL_SMTP
en Autonomous Database.
Tema principal: Envío de correo electrónico en Autonomous Database
Envío de 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.
DBMS_CLOUD_NOTIFICATION
soporta el envío de correo electrónico solo a puntos finales SMTP públicos. El servicio Oracle Cloud Infrastructure Email Delivery es el único proveedor de correo electrónico soportado.
- 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
Envío de mensajes como correo electrónico desde Autonomous Database
Puede utilizar DBMS_CLOUD_NOTIFICATION
para enviar mensajes como correo electrónico.
Solo puede utilizar
DBMS_CLOUD_NOTIFICATION
para notificaciones de correo electrónico con Autonomous Database versión 19.21 y posteriores.