Nota

Integra OCI Email Delivery Service con OCI Functions, OCI Object Storage, OCI Vault e OCI Database con PostgreSQL

Introduzione

Le aziende si affidano a comunicazioni e-mail efficaci per vari scopi, tra cui notifiche automatiche, aggiornamenti delle applicazioni e campagne di marketing. Per soddisfare queste esigenze, Oracle Cloud Infrastructure (OCI) offre un solido servizio di consegna tramite e-mail progettato per fornire una soluzione gestita veloce e affidabile per l'invio di e-mail sicure, di marketing ad alto volume e transazionali.

Questa esercitazione illustra l'utilizzo del servizio OCI Email Delivery per l'invio semplificato delle e-mail, perfettamente integrato con OCI Functions, OCI Vault, OCI Object Storage e OCI Database con PostgreSQL per migliorare l'automazione e l'affidabilità nei processi di invio delle e-mail e offre anche una piattaforma flessibile per creare soluzioni di consegna delle e-mail affidabili. Il codice fornito funge da punto di partenza per gli sviluppatori per creare pipeline di consegna e-mail personalizzate in base alle loro esigenze specifiche.

Quando viene richiamata, la funzione creata utilizzando il servizio OCI Functions recupererà un modello di posta elettronica da OCI Object Storage, si connetterà al database OCI con il database PostgreSQL per recuperare gli indirizzi di posta elettronica dei destinatari e invierà il messaggio di posta elettronica a tutti questi destinatari.

Obiettivi

Prerequisiti

Task 1: impostare il servizio di consegna tramite posta elettronica OCI

Per configurare il servizio di consegna tramite posta elettronica OCI, vedere Istruzioni dettagliate per l'invio di posta elettronica con OCI Email Delivery e Video: Come configurare il servizio di consegna tramite posta elettronica in OCI.

Dopo aver completato la configurazione, è necessario disporre di almeno un mittente di posta elettronica approvato e di credenziali SMTP (Simple Mail Transfer Protocol) per l'utente OCI.

Task 2: caricare il modello di posta elettronica nel bucket di storage degli oggetti OCI

Scaricare il modello e-mail da qui: Modello e-mail e caricarlo nel bucket esistente.

Bucket contenente il modello dell'e-mail da inviare

Task 3: impostare gli indirizzi dei destinatari nel database OCI con il database PostgreSQL

  1. Connettersi al database OCI con il sistema di database PostgreSQL. Per ulteriori informazioni, vedere Connessione a un database OCI con PostgreSQL con l'interfaccia CLI PostgreSQL.

  2. Creare una tabella per gli indirizzi di posta elettronica dei destinatari nel database OCI con il database PostgreSQL.

    CREATE TABLE emails (
        address VARCHAR(255) PRIMARY KEY
    );
    
  3. Inserire i valori nella tabella.

    INSERT INTO emails (address) VALUES
        ('email1@example.com'),
        ('email2@example.com'),
        ('email3@example.com');
    

Task 4: Crea segreto/i nel vault OCI

Creare segreti nel vault per i valori riservati che verranno utilizzati, ad esempio il nome utente e la password SMTP (utilizzati dal servizio OCI Email Delivery), il database OCI con il nome utente e la password del database PostgreSQL. Questi segreti verranno utilizzati in seguito in OCI Functions.

Segreto vault

Task 5: impostare le funzioni OCI

  1. Creare una funzione. Per ulteriori informazioni, vedere Functions: get Started using the CLI.

    Nota: in questa esercitazione viene utilizzata una funzione Python.

    In questa esercitazione il nome dell'applicazione è email-delivery-function e la funzione distribuita è email_function.

    Funzione applicazione

  2. Dopo l'impostazione della funzione di base originale, nella cartella delle funzioni saranno disponibili i seguenti file.

    • func.py: Per posizionare il codice della funzione Python personalizzata.
    • func.yaml: Dati di configurazione per la funzione.
    • requirements.txt: Elenca le dipendenze richieste dal codice funzione.
  3. Scaricare il codice funzione da qui: script Python e sostituire il codice nel file func.py.

    Riepilogo delle operazioni eseguite dallo script func.py:

    • Importa le librerie necessarie per l'invio di e-mail, l'utilizzo dei dati JSON, l'accesso ai servizi OCI e l'interazione con un database OCI con un database PostgreSQL.

    • Definisce le funzioni per l'invio di e-mail (sendEmail) e i segreti di decodifica memorizzati nel vault OCI (decodeSecret).

    • Definisce una funzione handler principale (handler) che:

      • Recupera le credenziali SMTP, l'host SMTP, la porta SMTP e altri valori di configurazione dal contesto della funzione.

      • Recupera il contenuto del modello di posta elettronica da OCI Object Storage.

      • Recupera le informazioni e l'oggetto del mittente dal payload JSON in entrata.

      • Si connette a un database OCI con il database PostgreSQL utilizzando le credenziali ottenute da OCI Vault.

      • Esegue una query per recuperare gli indirizzi di posta elettronica da una tabella nel database.

      • Itera tramite gli indirizzi e-mail recuperati e invia e-mail utilizzando la funzione sendEmail.

      • Restituisce un messaggio di operazione riuscita che indica gli indirizzi e-mail a cui sono state inviate le e-mail.

    Nota:

    • Sostituire host nello script con il proprio database OCI con l'endpoint del sistema di database PostgreSQL situato sotto il database OCI con la sezione di connessione PostgreSQL. Puoi anche impostarlo come un altro segreto nel vault OCI o recuperarlo dal payload.

    • Se si desidera eseguire la funzione da un altro file non denominato come func.py, posizionare il file nella cartella della funzione e modificare il file func.yaml di conseguenza.

  4. Modificare il file requirements.txt per includere le librerie aggiuntive su cui si basa il nuovo codice Python:

    • oci: garantisce che il kit SDK (Software Development Kit) OCI sia installato nell'ambiente runtime della funzione quando la funzione viene distribuita in OCI Functions.

    • psycopg2-binary: consente al codice funzione di connettersi e manipolare il database OCI con il database PostgreSQL.

    $ cat requirements.txt
    fdk
    oci
    psycopg2-binary
    
  5. Aggiungere la configurazione seguente al contesto della funzione. Sostituire l'OCID (Oracle Cloud Identifier) del vault e l'indirizzo del database OCI con l'endpoint del sistema di database 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"
    
  6. Distribuire la funzione.

    Nota: sostituire email-delivery-function con il nome dell'applicazione.

    fn -v deploy --app email-delivery-function
    
  7. Richiamare la funzione. La funzione prevede un payload che deve includere:

    • sender-email: il mittente approvato dal servizio OCI Email Delivery.
    • sender-name: il nome del mittente visualizzato al destinatario.
    • subject: oggetto dell'e-mail.

    Se necessario, sostituire il nome dell'applicazione e il nome della funzione.

    echo '{ "sender-email":"...approved_sender_address...", "sender-name":"Company Test", "subject":"test email" }' | fn invoke email-delivery-function email_function
    

    Il richiamo della funzione deve restituire il messaggio:

    Email successfully sent to ['email1@example.com', 'email2@example.com', 'email3@example.com']!
    

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.