Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al completar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Integre el servicio OCI Email Delivery con OCI Functions, OCI Object Storage, OCI Vault y OCI Database con PostgreSQL
Introducción
Las empresas confían en una comunicación por correo electrónico eficaz para diversos fines, incluidas las notificaciones automáticas, las actualizaciones de aplicaciones y las campañas de marketing. Para satisfacer estas necesidades, Oracle Cloud Infrastructure (OCI) ofrece un sólido servicio Email Delivery diseñado para proporcionar una solución gestionada rápida y fiable para enviar correos electrónicos transaccionales y de marketing seguros y de alto volumen.
En este tutorial se muestra cómo se utiliza el servicio OCI Email Delivery para el envío de correo electrónico optimizado, integrado perfectamente con OCI Functions, OCI Vault, OCI Object Storage y OCI Database con PostgreSQL para mejorar la automatización y la fiabilidad en los procesos de distribución de correo electrónico, y también ofrece una plataforma flexible para crear soluciones de entrega de correo electrónico fiables. El código proporcionado sirve como punto de partida para que los desarrolladores creen pipelines de entrega de correo electrónico personalizados según sus necesidades específicas.
Cuando se llama, la función creada mediante el servicio OCI Functions recuperará una plantilla de correo electrónico de OCI Object Storage, se conectará a la base de datos de OCI con la base de datos PostgreSQL para recuperar las direcciones de correo electrónico del destinatario y enviará el correo electrónico a todos estos destinatarios.
Objetivos
-
Integre el servicio OCI Email Delivery con OCI Functions.
-
Utilice OCI Vault para gestionar de forma segura las credenciales y la información confidencial.
-
Recupere direcciones de destinatarios de una base de datos de OCI con la base de datos PostgreSQL para el envío de correo electrónico personalizado.
-
Recupere plantillas de correo electrónico de forma dinámica desde OCI Object Storage para obtener contenido personalizable.
Requisitos
-
Acceso a un arrendamiento y políticas de OCI permitidos en Oracle Cloud Infrastructure Identity and Access Management (OCI IAM).
-
Acceso a los recursos de OCI: servicios de OCI Email Delivery, OCI Functions, OCI Vault, OCI Object Storage.
-
Cubo de OCI Object Storage existente, OCI Vault, OCI Database con sistema de base de datos PostgreSQL.
Tarea 1: Configuración del servicio OCI Email Delivery
Para configurar el servicio OCI Email Delivery, consulte Instrucciones paso a paso para enviar correos electrónicos con OCI Email Delivery y Vídeo: Cómo configurar Email Delivery en OCI.
Después de completar la configuración, debe tener al menos un remitente de correo electrónico aprobado y credenciales de protocolo simple de transferencia de correo (SMTP) para su usuario de OCI.
Tarea 2: Carga de la plantilla de correo electrónico en el cubo de OCI Object Storage
Descargue la plantilla de correo electrónico desde aquí: Plantilla de correo electrónico y cárguela en el cubo existente.
Tarea 3: Configuración de direcciones de destinatarios en la base de datos de OCI con la base de datos PostgreSQL
-
Conéctese a la base de datos de OCI con el sistema de base de datos PostgreSQL. Para obtener más información, consulte Conexión a una base de datos de OCI con PostgreSQL con la CLI PostgreSQL.
-
Cree una tabla para las direcciones de correo electrónico del destinatario en la base de datos de OCI con la base de datos PostgreSQL.
CREATE TABLE emails ( address VARCHAR(255) PRIMARY KEY );
-
Inserte valores en la tabla.
INSERT INTO emails (address) VALUES ('email1@example.com'), ('email2@example.com'), ('email3@example.com');
Tarea 4: Creación de secretos en OCI Vault
Cree secretos en el almacén para los valores confidenciales que utilizará, por ejemplo, el nombre de usuario y la contraseña de SMTP (utilizados por el servicio OCI Email Delivery), la base de datos de OCI con el nombre de usuario y la contraseña de la base de datos PostgreSQL. Estos secretos se utilizarán más adelante en OCI Functions.
Tarea 5: Configuración de OCI Functions
-
Crear una función. Para obtener más información, consulte Funciones: Introducción al uso de la CLI.
Nota: En este tutorial, utilizamos una función de Python.
En este tutorial, la aplicación se denomina
email-delivery-function
y la función desplegada se denominaemail_function
. -
Después de configurar la función básica original, tendrá los siguientes archivos en su carpeta de funciones.
func.py:
Para colocar el código de función de Python personalizado.func.yaml:
Datos de configuración de la función.requirements.txt:
Muestra las dependencias requeridas por el código de función.
-
Descargue el código de función desde aquí: script de Python y sustituya el código en el archivo
func.py
.Resumen de lo que hace el script
func.py
:-
Importa las bibliotecas necesarias para enviar correos electrónicos, trabajar con datos JSON, acceder a los servicios de OCI e interactuar con una base de datos de OCI con la base de datos PostgreSQL.
-
Define funciones para enviar correos electrónicos (
sendEmail
) y descodificar secretos almacenados en OCI Vault (decodeSecret
). -
Define una función de manejador principal (
handler
) que:-
Recupera las credenciales SMTP, el host SMTP, el puerto SMTP y otros valores de configuración del contexto de la función.
-
Recupera contenido de plantilla de correo electrónico de OCI Object Storage.
-
Recupera la información y el asunto del remitente de la carga útil de JSON entrante.
-
Se conecta a una base de datos de OCI con la base de datos PostgreSQL mediante credenciales obtenidas de OCI Vault.
-
Ejecuta una consulta para recuperar direcciones de correo electrónico de una tabla de la base de datos.
-
Itera a través de las direcciones de correo electrónico recuperadas y envía correos electrónicos mediante la función
sendEmail
. -
Devuelve un mensaje que indica las direcciones de correo electrónico a las que se enviaron los correos electrónicos.
-
Nota:
-
Sustituya
host
en el script por su propia base de datos de OCI por el punto final del sistema de base de datos PostgreSQL ubicado en la sección OCI Database con conexión PostgreSQL. También puede configurarlo como otro secreto en OCI Vault o tomarlo de la carga útil. -
Si desea ejecutar la función desde otro archivo que no tenga el nombre
func.py
, coloque ese archivo en la carpeta de la función y edite el archivofunc.yaml
según corresponda.
-
-
Edite el archivo
requirements.txt
para incluir las bibliotecas adicionales en las que se basa el nuevo código Python:-
oci
: garantiza que el kit de desarrollo de software (SDK) de OCI está instalado en el entorno de tiempo de ejecución de la función cuando esta se despliega en OCI Functions. -
psycopg2-binary
: permite al código de función conectarse a la base de datos de OCI y manipularla con la base de datos PostgreSQL.
$ cat requirements.txt fdk oci psycopg2-binary
-
-
Agregue la siguiente configuración al contexto de la función. Sustituya el identificador de Oracle Cloud (OCID) del almacén y la dirección de la base de datos de OCI por el punto final del sistema de base de datos PostgreSQL.
fn config function email-delivery-function email_function db-host "..postgres_endpoint_IP.." fn config function email-delivery-function email_function vault-ocid "ocid1.vault.oc1.eu-frankfurt-1..." fn config function email-delivery-function email_function smtp-host "smtp.email.eu-frankfurt-1.oci.oraclecloud.com" fn config function email-delivery-function email_function smtp-port 587 fn config function email-delivery-function email_function smtp-password "xxxxxxxxxx" fn config function email-delivery-function email_function smtp-username "smtp_username" fn config function email-delivery-function email_function db-username "dbuser" fn config function email-delivery-function email_function db-password "xxxxxxxxxx"
-
Despliegue la función.
Nota: Sustituya
email-delivery-function
por el nombre de la aplicación.fn -v deploy --app email-delivery-function
-
Llame a la función. La función espera una carga útil que debe incluir:
sender-email
: remitente aprobado del servicio OCI Email Delivery.sender-name
: nombre del remitente, tal y como se muestra al destinatario.subject
: asunto del correo electrónico.
Si es necesario, sustituya el nombre de la aplicación y el nombre de la función.
echo '{ "sender-email":"...approved_sender_address...", "sender-name":"Company Test", "subject":"test email" }' | fn invoke email-delivery-function email_function
La llamada a la función debe devolver el mensaje:
Email successfully sent to ['email1@example.com', 'email2@example.com', 'email3@example.com']!
Enlaces relacionados
Agradecimientos
- Autor: Adina Nicolescu (ingeniero sénior en la nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Integrate OCI Email Delivery Service with OCI Functions, OCI Object Storage, OCI Vault, and OCI Database with PostgreSQL
F96462-01
April 2024