Observação:

Integre o OCI Email Delivery Service com o OCI Functions, OCI Object Storage, OCI Vault e OCI Database com PostgreSQL

Introdução

As empresas dependem de uma comunicação por email eficaz para vários fins, incluindo notificações automáticas, atualizações de aplicativos e campanhas de marketing. Para atender a essas necessidades, a Oracle Cloud Infrastructure (OCI) oferece um serviço robusto de Entrega de E-mail projetado para fornecer uma solução gerenciada rápida e confiável para enviar e-mails transacionais e de marketing seguros e de alto volume.

Este tutorial ilustra como o serviço OCI Email Delivery é empregado para envio de e-mail simplificado, perfeitamente integrado ao OCI Functions, OCI Vault, OCI Object Storage e OCI Database com PostgreSQL para melhorar a automação e a confiabilidade nos processos de envio de e-mail e também oferece uma plataforma flexível para criar soluções de entrega de e-mail confiáveis. O código fornecido serve como ponto de partida para que os desenvolvedores criem pipelines de entrega de email personalizados de acordo com suas necessidades específicas.

Quando chamada, a função criada usando o serviço OCI Functions recuperará um modelo de e-mail do OCI Object Storage, estabelecerá conexão com o OCI Database com o banco de dados PostgreSQL para recuperar endereços de e-mail do destinatário e enviará o e-mail a todos esses destinatários.

Objetivos

Pré-requisitos

Tarefa 1: Configurar o Serviço OCI Email Delivery

Para configurar o serviço OCI Email Delivery, consulte Instruções passo a passo para enviar e-mail com o OCI Email Delivery e Vídeo: Como configurar o Email Delivery no OCI.

Após concluir a configuração, você deverá ter pelo menos um remetente de e-mail aprovado e credenciais SMTP (Simple Mail Transfer Protocol) para seu usuário do OCI.

Tarefa 2: Fazer Upload do Modelo de E-mail no Bucket do OCI Object Storage

Faça download do modelo de e-mail aqui: Modelo de e-mail e faça upload dele para o bucket existente.

Bucket contendo o modelo do e-mail a ser enviado

Tarefa 3: Configurar Endereços de Destinatários no OCI Database com o Banco de Dados PostgreSQL

  1. Conecte-se ao OCI Database com o sistema de banco de dados PostgreSQL. Para obter mais informações, consulte Estabelecendo Conexão com um Banco de Dados do OCI com PostgreSQL com a CLI PostgreSQL.

  2. Crie uma tabela para os endereços de e-mail do destinatário no OCI Database com o banco de dados PostgreSQL.

    CREATE TABLE emails (
        address VARCHAR(255) PRIMARY KEY
    );
    
  3. Insira os valores na tabela.

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

Tarefa 4: Criar Segredo(s) no OCI Vault

Crie segredos em seu vault para os valores confidenciais que você usará, por exemplo, o nome de usuário e a senha SMTP (usados pelo serviço OCI Email Delivery), o OCI Database com nome de usuário e senha do banco de dados PostgreSQL. Esses segredos serão usados posteriormente no OCI Functions.

Segredo do vault

Tarefa 5: Configurar Funções do OCI

  1. Crie uma função. Para obter mais informações, consulte Funções: Conceitos Básicos do uso da CLI.

    Observação: Neste tutorial, usamos uma função Python.

    Neste tutorial, o aplicativo é chamado de email-delivery-function e a função implantada é chamada de email_function.

    Função do aplicativo

  2. Após a configuração da função básica original, você terá os seguintes arquivos em sua pasta de funções.

    • func.py: Para colocar o código de função Python personalizado.
    • func.yaml: Dados de configuração da sua função.
    • requirements.txt: Lista as dependências exigidas pelo código da função.
  3. Faça download do código de função aqui: script Python e substitua o código no arquivo func.py.

    Resumo do que o script func.py faz:

    • Importa as bibliotecas necessárias para enviar e-mails, trabalhar com dados JSON, acessar serviços do OCI e interagir com um OCI Database com banco de dados PostgreSQL.

    • Define funções para enviar e-mails (sendEmail) e decodificar segredos armazenados no OCI Vault (decodeSecret).

    • Define uma função de handler principal (handler) que:

      • Recupera credenciais SMTP, host SMTP, porta SMTP e outros valores de configuração do contexto da função.

      • Recupera o conteúdo do modelo de e-mail do OCI Object Storage.

      • Recupera informações do remetente e assunto do payload JSON de entrada.

      • Estabelece conexão com um Banco de Dados do OCI com o banco de dados PostgreSQL usando credenciais obtidas do OCI Vault.

      • Executa uma consulta para recuperar endereços de e-mail de uma tabela no banco de dados.

      • Repete-se pelos endereços de e-mail recuperados e envia e-mails usando a função sendEmail.

      • Retorna uma mensagem de sucesso indicando os endereços de e-mail para os quais os e-mails foram enviados.

    Observação:

    • Substitua o host no script pelo seu próprio OCI Database pelo ponto final do sistema de banco de dados PostgreSQL localizado na seção OCI Database pela seção de conexão PostgreSQL. Você também pode configurá-lo como outro segredo no Vault do OCI ou extraí-lo do payload.

    • Se você quiser executar a função de outro arquivo que não seja nomeado como func.py, coloque esse arquivo na pasta da função e edite o arquivo func.yaml adequadamente.

  4. Edite o arquivo requirements.txt para incluir as bibliotecas extras nas quais o novo código Python se baseia:

    • oci: Garante que o SDK (Software Development Kit) do OCI esteja instalado no ambiente de runtime da função quando a função for implantada no OCI Functions.

    • psycopg2-binary: Permite que o código de função estabeleça conexão e manipule o OCI Database com o banco de dados PostgreSQL.

    $ cat requirements.txt
    fdk
    oci
    psycopg2-binary
    
  5. Adicione a configuração a seguir ao contexto da função. Substitua o OCID (Oracle Cloud Identifier) do vault e o endereço do OCI Database pelo ponto final do sistema de banco de dados 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. Implante a função.

    Observação: Substitua email-delivery-function pelo nome do seu aplicativo.

    fn -v deploy --app email-delivery-function
    
  7. Chame a função. A função espera um payload que deve incluir:

    • sender-email: O remetente aprovado do serviço OCI Email Delivery.
    • sender-name: O nome do remetente, conforme exibido para o destinatário.
    • subject: Assunto do e-mail.

    Se necessário, substitua o nome do aplicativo e o nome da função.

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

    A chamada de função deve retornar a mensagem:

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

Confirmação

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.