Enviar E-mail pelo Oracle APEX

Você pode usar o pacote APEX_MAIL para enviar e-mails de aplicativos Oracle APEX implantados no Autonomous Database.

Antes de usar APEX_MAIL, configure um servidor SMTP que entregará e-mail do Oracle APEX. O Oracle APEX no Autonomous Database suporta o serviço Oracle Cloud Infrastructure Email Delivery, bem como provedores de e-mail de terceiros.

Configurar o OCI Email Delivery

Sua instância do Oracle APEX pode utilizar o serviço OCI Email Delivery para enviar e-mails de aplicativos APEX.

Para configurar a funcionalidade APEX_MAIL para usar o serviço OCI Email Delivery:

  1. Identifique o ponto final de conexão SMTP para o Email Delivery. Você configura o ponto final como Host SMTP em sua instância do APEX na Etapa 4. Pode ser necessário se inscrever em regiões adicionais do Oracle Cloud Infrastructure se o Email Delivery não estiver disponível na sua região atual. Para obter mais informações, consulte Configurar Conexão SMTP.
  2. Gere credenciais SMTP para o serviço Email Delivery. Sua instância do APEX usa credenciais para autenticar com servidores de Entrega de E-mail quando você envia e-mail. Consulte Criando Credenciais SMTP para mais informações.
  3. Crie um remetente aprovado para a Entrega de E-mail. É necessário concluir esta etapa para todos os endereços que você usa como "De" com chamadas APEX_MAIL.SEND, como o endereço "De" do E-mail da Aplicação em seus aplicativos ou no parâmetro da instância SMTP_FROM. Consulte Gerenciando Remetentes Aprovados para mais informações.
  4. Conecte-se ao seu Autonomous Database como usuário ADMIN usando um cliente SQL e configure os seguintes parâmetros SMTP usando APEX_INSTANCE_ADMIN.SET_PARAMETER:
    • SMTP_HOST_ADDRESS: Especifica o ponto final de conexão SMTP da Etapa 1
    • SMTP_USERNAME: Especifica o nome de usuário de credencial SMTP da Etapa 2
    • SMTP_PASSWORD: Especifica a senha da credencial SMTP da Etapa 2
    • SMTP_HOST_PORT: Mantenha o valor padrão para este parâmetro (587)
    • SMTP_TLS_MODE: Manter o valor padrão para esse parâmetro (STARTTLS)
    Por exemplo:
    BEGIN
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.email.us-phoenix-1.oci.oraclecloud.com');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'ocid1.user.oc1.username');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'password');
      COMMIT;
    END;
    /

    Consulte APEX_INSTANCE_ADMIN para obter mais informações.

Consulte Visão Geral do Serviço Email Delivery para obter mais informações.

Configurar Provedor de E-mail de Terceiros

Sua instância do Oracle APEX pode utilizar provedores de e-mail de terceiros para enviar e-mails de aplicativos APEX.

Antes de configurar um provedor de e-mail de terceiros no APEX, certifique-se de que os seguintes pré-requisitos sejam atendidos:

  • Seu Autonomous Database deve ser configurado para usar um Ponto Final Privado.
  • O ponto final SMTP do provedor de e-mail (porta 25 ou 587) deve estar acessível na VCN (Rede Virtual na Nuvem) e na sub-rede em que o Autonomous Database está provisionado.

Consulte Configurar o Acesso à Rede com Pontos Finais Privados para mais informações.

Após os pré-requisitos acima serem atendidos:

  1. Adicione a seguinte lista de controle de acesso para o ponto final SMTP como ADMIN (observe o parâmetro private_target):
    BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'smtp.example.com',
        ace => XS$ACE_TYPE(
          privilege_list => XS$NAME_LIST('SMTP'),
          principal_name => APEX_APPLICATION.g_flow_schema_owner,
          principal_type => XS_ACL.ptype_db),
        private_target => true);
    END;
    /
    Observação

    Se você definir a propriedade do banco de dados ROUTE_OUTBOUND_CONNECTIONS como PRIVATE_ENDPOINT, não precisará definir listas de controle de acesso para pontos finais SMTP individuais para acessá-los no APEX. Consulte Segurança Aprimorada para Conexões de Saída com Pontos Finais Privados para obter mais informações.
  2. Estabeleça conexão com o Autonomous Database como usuário ADMIN usando um cliente SQL e configure os seguintes parâmetros SMTP usando APEX_INSTANCE_ADMIN.SET_PARAMETER. Se seu provedor de e-mail de terceiros não exigir autenticação, ignore os parâmetros SMTP_USERNAME e SMTP_PASSWORD.
    • SMTP_HOST_ADDRESS: Especifica o ponto final de conexão SMTP da Etapa 1
    • Os valores válidos para o parâmetro SMTP_HOST_PORT são 25 ou 587
    • Defina o valor do parâmetro SMTP_TLS_MODE como Y

    Por exemplo:

    BEGIN
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.example.com');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_PORT', '587');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_TLS_MODE', 'Y');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'username');
      APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'password');
      COMMIT;
    END;
    /

    Consulte APEX_INSTANCE_ADMIN para obter mais informações.

Validar Configuração de E-mail

Mostra as etapas para confirmar que seu provedor de e-mail está pronto para uso com o APEX_MAIL.

  1. Valide as definições de configuração de e-mail usando um cliente SQL como ADMIN:
    BEGIN
      APEX_INSTANCE_ADMIN.VALIDATE_EMAIL_CONFIG;
    END;
    /

    Se algum erro for reportado (por exemplo, "ORA-29279: SMTP permanent error: 535 Authentication credentials invalid"), ajuste os parâmetros SMTP ou a configuração da Rede Virtual na Nuvem (VCN) e repita a etapa de validação.

    Consulte APEX_INSTANCE_ADMIN para obter mais informações.

  2. Envie um e-mail de teste usando o APEX SQL Workshop. Se você estiver usando o OCI Email Delivery, certifique-se de que o parâmetro p_from corresponda a um dos remetentes aprovados. Por exemplo:
    BEGIN
      APEX_MAIL.SEND(
        p_from => 'alice@example.com',
        p_to   => 'bob@example.com',
        p_subj => 'Email from Oracle Autonomous Database',
        p_body => 'Sent using APEX_MAIL');
    END;
    /

    Consulte APEX_MAIL para ver mais informações.

  3. Para monitorar a entrega de e-mails na sua instância do APEX:
    1. Acesse o APEX Administration Services.
    2. Abra a página Gerenciar Instância.
    3. Clique no link Fila de E-mail na seção Gerenciar Metadados.
    Como alternativa, consulte as views APEX_MAIL_QUEUE e APEX_MAIL_LOG usando um cliente SQL.

Observações para Envio de E-mail do Oracle APEX

Fornece observações para trabalhar com provedores de e-mail no Oracle APEX de uma instância do Autonomous Database.

Observe o seguinte ao trabalhar com provedores de e-mail no Oracle APEX:

  • Há um limite padrão de 1.000 e-mails por espaço de trabalho em um período de 24 horas. Você pode atualizar ou remover esse limite no Oracle APEX Administration Services ou definindo o parâmetro de instância WORKSPACE_EMAIL_MAXIMUM. Se você estiver usando o serviço OCI Email Delivery, o serviço poderá impor limitações adicionais.
  • Ao usar o serviço OCI Email Delivery, um remetente aprovado deve ser configurado para todos os endereços de "De" possíveis ou o e-mail será rejeitado. Consulte Gerenciando Remetentes Aprovados para mais informações.