Configurar o envio de e-mail no Oracle Apex pode parecer ser uma tarefa, porém se mal executada pode se estender por horas ou até mesmos dias.
Nesse artigo, irei mostrar como efetuei a configuração do envio de e-mail usando o serviço de Email Delivery da Oracle Cloud - via SMTP.
Para utilizar o Email Delivery da Oracle Cloud é necessário ter uma conta. Após o periodo trial é necessário alterar a conta para paga, mesmo utilizando o free tier, para continuar utilizando os serviços de e-mail.
A configuração abaixo os passos são basicamente os mesmos para utilização do SMTP da Google ou de qualquer outro provedor de envio de e-mails quando é necessário a utilização da conexão SSL/TLS.
Consulte a documentação da Oracle para criação de uma conta.
Oracle Wallet
Anter de prosseguir, recomendo a leitura do arquivo O que é Oracle Wallet? para entender mais do funcionamento da Oracle Wallet.Será necessário a criação de uma Wallet para armazenamento do certificado (root) para a criação de um canal seguro com o serviço (SSL/TLS).
A criação da Oracle Wallet abaixo foi criada em um Oracle Database 18c XE em um servidor CentOS 7.
Caso for usar o banco Autonomous Transaction da Oracle, não é necessário criar uma wallet para utilizar o serviço de envio de e-mail.
Para listar e obter os certificados utilize o openssl. Lembre-se, é necessário apenas o certificado root - entidade certificadora - e salve com a extensão .pem:
openssl s_client -starttls smtp -connect smtp.email.sa-saopaulo-1.oci.oraclecloud.com:587 -showcerts
Para criar a Wallet, execute o comando abaixo:
orapki wallet create -wallet /home/oracle/wallets/apex -pwd averysecurepassword
Para adicionar o certificado na wallet:
orapki wallet add -wallet /home/oracle/wallets/apex -trusted_cert -cert /home/oracle/rootcertificates/certificado.pem
Para visualizar os certificados da wallet:
orapki wallet display -wallet /home/oracle/wallets/apex/
Caso precisar remover todos os certificados, use o comando abaixo:
orapki wallet remove -trusted_cert_all -wallet /home/oracle/wallets/apex
Se a configuração do certificado for feita incorretamente, irá retornar o erro ORA-29024: Certificate validation failure.
Configuração
Faça login no painel de Administração do Apex:
Acesse a Configurações da Instância (Instance Settings) e edite a opção "Wallet" e informe o caminho da wallet criada acima e a senha:
Na opção de "E-mail":
Informe os dados de conexão do SMTP. Atente-se para utilizar a opção de SSL/TLS - "After connection is established".
BEGIN
APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_HOST_ADDRESS', 'smtp.email.sa-saopaulo-1.oci.oraclecloud.com');
APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_USERNAME', 'xxxxxxxx');
APEX_INSTANCE_ADMIN.SET_PARAMETER('SMTP_PASSWORD', 'xxxxxxxx');
COMMIT;
END;
/
Caso ocorrer o erro ORA-29019: The protocol version is incorrect é necessário verificar a permissão de ACL. Lembre-se de rodar o comando abaixo conectado como SYSDBA (Oracle Database 12c ou superior):
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => 'APEX_190200',
principal_type => xs_acl.ptype_db));
END;
/
Para testar o envio de e-mail basta rodar o comando abaixo, lembre-se de alterar os e-mails:
DECLARE
l_body CLOB;
BEGIN
l_body := 'Thank you for your interest in the APEX_MAIL
package.'||utl_tcp.crlf||utl_tcp.crlf;
l_body := l_body ||' Sincerely,'||utl_tcp.crlf;
l_body := l_body ||' The Application Express Dev Team'||utl_tcp.crlf;
apex_mail.send(
p_to => 'some_user@somewhere.com', -- change to your email address
p_from => 'some_sender@somewhere.com', -- change to a real senders email address
p_body => l_body,
p_subj => 'APEX_MAIL Package - Plain Text message');
END;
/
Comentários
Postar um comentário