Enviar E-mail no Autonomous AI Database
Há várias opções para enviar e-mails no Autonomous AI Database. Você também pode enviar mensagens de texto ou a saída de uma consulta SQL para um canal Slack ou MSTeams.
Enviar E-mail com o Email Delivery Service no Autonomous AI Database
Descreve as etapas para enviar e-mails usando o UTL_SMTP no Autonomous AI Database.
Para enviar e-mail com o Oracle Cloud Infrastructure Email Delivery Service:
-
Identifique seu ponto final de conexão SMTP para o serviço Email Delivery. Talvez você precise assinar regiões adicionais do Oracle Cloud Infrastructure se o serviço Email Delivery não estiver disponível na sua região atual.
Por exemplo, selecione uma das opções a seguir para o ponto final de conexão SMTP:
-
smtp.us-phoenix-1.oraclecloud.com
-
smtp.us-ashburn-1.oraclecloud.com
-
smtp.email.uk-london-1.oci.oraclecloud.com
-
smtp.email.eu-frankfurt-1.oci.oraclecloud.com
Observação
Observação: Se o ponto final da conexão SMTP estiver em uma região diferente do seu Autonomous AI Database, crie uma solicitação no Suporte do Oracle Cloud para que o Cloud Operations ative o serviço Email Delivery dessa região para o seu Autonomous AI Database.Consulte Configurar Conexão SMTP para mais informações.
-
-
Gere credenciais SMTP para o serviço Email Delivery. O
UTL_SMTPusa credenciais para autenticar com servidores de Entrega de E-mail quando você envia e-mail.Consulte Gerar Credenciais SMTP para um Usuário para obter mais informações.
-
Crie um remetente aprovado para a Entrega de E-mail. Conclua esta etapa para todos os endereços com
UTL_SMTP.MAILusados como "From".Consulte Gerenciando Remetentes Aprovados para mais informações.
-
Permitir acesso SMTP para usuário ADMIN anexando uma Access Control Entry (ACE).
Por exemplo:
BEGIN -- Allow SMTP access for user ADMIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.us.example.com', lower_port => 587, upper_port => 587, ace => xs$ace_type(privilege_list => xs$name_list('SMTP'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db)); END; / -
Crie um procedimento PL/SQL para enviar e-mail.
Por exemplo, consulte o código de amostra mostrado em Código de Amostra de E-mail de Envio SMTP.
-
Envie um e-mail de teste usando o procedimento PL/SQL criado na etapa 5.
Por exemplo:
execute send_mail('taylor@example.com', 'Email from Oracle Autonomous AI Database', 'Sent using UTL_SMTP');
Consulte UTL_SMTP para obter informações sobre UTL_SMTP.
Consulte Notas do Pacote PL/SQL para o Autonomous AI Database para obter restrições UTL_SMTP com o Autonomous AI Database.
SMTP - Enviar Código de Amostra de E-mail
Mostra o código de amostra para enviar e-mail com UTL_SMTP no Autonomous AI Database.
CREATE OR REPLACE PROCEDURE SEND_MAIL (
msg_to varchar2,
msg_subject varchar2,
msg_text varchar2 )
IS
mail_conn utl_smtp.connection;
username varchar2(1000):= 'ocid1.user.oc1.username';
passwd varchar2(50):= 'password';
msg_from varchar2(50) := 'adam@example.com';
mailhost VARCHAR2(50) := 'smtp.us-ashburn-1.oraclecloud.com';
BEGIN
mail_conn := UTL_smtp.open_connection(mailhost, 587);
utl_smtp.starttls(mail_conn);
UTL_SMTP.AUTH(mail_conn, username, passwd, schemes => 'PLAIN');
utl_smtp.mail(mail_conn, msg_from);
utl_smtp.rcpt(mail_conn, msg_to);
UTL_smtp.open_data(mail_conn);
UTL_SMTP.write_data(mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'To: ' || msg_to || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'From: ' || msg_from || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'Subject: ' || msg_subject || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'Reply-To: ' || msg_to || UTL_TCP.crlf || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, msg_text || UTL_TCP.crlf || UTL_TCP.crlf);
UTL_smtp.close_data(mail_conn);
UTL_smtp.quit(mail_conn);
EXCEPTION
WHEN UTL_smtp.transient_error OR UTL_smtp.permanent_error THEN
UTL_smtp.quit(mail_conn);
dbms_output.put_line(sqlerrm);
WHEN OTHERS THEN
UTL_smtp.quit(mail_conn);
dbms_output.put_line(sqlerrm);
END;
/Onde:
-
mailhost: especifica o Ponto Final de Conexão SMTP da Etapa 1 em Enviar E-mail com o Serviço Email Delivery no Autonomous AI Database.
-
username: especifica o nome de usuário da credencial SMTP da Etapa 2 em Send Email with Email Delivery Service on Autonomous AI Database.
-
passwd: especifica a senha da credencial SMTP da Etapa 2 em Enviar E-mail com o Serviço Email Delivery no Autonomous AI Database.
-
msg_from: especifica um dos remetentes aprovados da Etapa 3 em Enviar E-mail com o Serviço Email Delivery no Autonomous AI Database.
Enviar E-mail com um Provedor de E-mail em um Ponto Final Privado
Descreve as etapas para enviar e-mails com um provedor de e-mail que está no Ponto Final Privado.
Para enviar e-mails do Autonomous AI Database usando um provedor de e-mail em um ponto final privado, o provedor de e-mail deve estar acessível pela VCN do Oracle Cloud Infrastructure (ponto final privado da instância do Autonomous AI Database). Por exemplo, você pode acessar um provedor de e-mail quando:
-
A instância do Autonomous AI Database de origem e o provedor de e-mail estão na mesma VCN do Oracle Cloud Infrastructure.
-
A instância do Autonomous AI Database de origem e o provedor de e-mail estão em diferentes VCNs do Oracle Cloud Infrastructure pareadas.
-
O provedor de e-mail está em uma rede on-premises conectada à VCN da instância do Autonomous AI Database da instância do Oracle Cloud Infrastructure usando FastConnect ou VPN.
Como pré-requisito, para enviar e-mail usando um provedor de e-mail, defina as seguintes regras de entrada e saída:
-
Defina uma regra de saída na lista de segurança de sub-rede ou no grupo de segurança de rede do banco de dados de origem, de forma que o tráfego para o host de destino seja permitido na porta 587 ou na porta 25 (dependendo de qual porta você está usando).
-
Defina uma regra de entrada na lista de segurança de sub-rede ou no grupo de segurança de rede do host de destino de forma que o tráfego do endereço IP da instância do Autonomous AI Database de origem para a porta 587 ou 25 seja permitido (dependendo de qual porta você está usando).
Para enviar e-mail de um provedor de e-mail no ponto final privado:
-
Permitir acesso SMTP para usuário ADMIN anexando uma Access Control Entry (ACE).
Por exemplo:
-- Create an Access Control List for the host BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.example.com', lower_port => 587, upper_port => 587, ace => xs$ace_type(privilege_list => xs$name_list('SMTP'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db), private_target => TRUE); END; /Observação
Observação:DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACEsó suporta um nome de host único para o parâmetrohost(em um ponto final privado, o uso de um endereço IP, um IP SCAN ou um nome de host SCAN não é suportado).Se você definir a propriedade do banco de dados
ROUTE_OUTBOUND_CONNECTIONS, a definição do parâmetroprivate_targetcomoTRUEnão será necessária nessa API. Consulte Segurança Aprimorada para Conexões de Saída com Pontos Finais Privados para obter mais informações. -
Crie um procedimento PL/SQL para enviar e-mail.
-
Envie um e-mail de teste usando o procedimento PL/SQL criado na etapa 2.
Por exemplo:
execute send_mail('taylor@example.com', 'Email from Oracle Autonomous AI Database', 'Sent using private email provider');
Usar Objetos de Credencial para definir a Autenticação SMTP
Descreve como especificar objetos de credencial para APIs UTL_SMTP.SET_CREDENTIAL.
O subprograma SET_CREDENTIAL envia o comando AUTH para autenticação no servidor SMTP.
O subprograma UTL_SMTP.SET_CREDENTIAL permite que você informe objetos de credencial para definir a autenticação SMTP. Os objetos de credencial são objetos de esquema; portanto, eles só podem ser acessados por usuários privilegiados e permitem que você configure privilégios no nível do esquema para acessar as credenciais. A aprovação de objetos de credencial é uma maneira apropriada e segura de armazenar e gerenciar nome de usuário/senha/chaves para autenticação.
O subprograma UTL_SMTP.SET_CREDENTIAL é uma alternativa segura e conveniente ao subprograma UTL_SMTP.AUTH.
Exemplo
...
UTL_SMTP.AUTH (l_mail_conn, 'ocid1.user.oc1.username', 'xxxxxxxxxxxx', schemes => 'PLAIN');
...Conforme mostrado no exemplo acima, ao chamar o subprograma AUTH, você deve informar o nome de usuário/senha em texto não criptografado como parte dos parâmetros formais PL/SQL. Talvez você precise incorporar o nome de usuário/senha em vários scripts cron ou de automação PL/SQL. A transmissão de senhas de texto não criptografado é um problema de conformidade tratado no subprograma UTL_SMTP.SET_CREDENTIAL.
Consulte Função e Procedimento AUTH para obter mais informações.
Sintaxe UTL_SMTP.SET_CREDENTIAL
PROCEDURE UTL_SMTP.SET_CREDENTIAL (
c IN OUT NOCOPY connection,
credential IN VARCHAR2,
schemes IN VARCHAR2 DEFAULT NON_CLEARTEXT_PASSWORD_SCHEMES
);
FUNCTION UTL_SMTP.SET_CREDENTIAL (
c IN OUT NOCOPY connection,
credential IN VARCHAR2,
schemes IN VARCHAR2 DEFAULT NON_CLEARTEXT_PASSWORD_SCHEMES)
RETURN reply;Exemplo
- Crie um objeto de credencial:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => 'HTTP_CRED',
username => 'web_app_user',
password => '<password>' );
END;Isso cria um objeto de credencial que cria um par de nome de usuário/senha armazenado.
Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.
Consulte Especificando Credenciais do Job do Scheduler para obter mais informações.
-
Execute o procedimento
UTL_SMTP.SET_CREDENTIAL:DECLARE l_mail_conn UTL_SMTP.CONNECTION; BEGIN l_mail_conn := UTL_SMTP.OPEN_CONNECTION('smtp.example.com', 587); UTL_SMTP.SET_CREDENTIAL(l_mail_conn, 'SMTP_CRED', SCHEMES => 'PLAIN'); ... END;Este exemplo envia o comando para autenticação no servidor SMTP. O servidor Web precisa dessas informações para autorizar a solicitação. O valor
l_mail_conné a conexão SMTP,SMTP_CREDé o nome das credenciais ePLAINé o esquema de autenticação SMTP.
Consulte UTL_SMTP para mais informações.
Consulte Notas do Pacote PL/SQL para o Autonomous AI Database para obter informações sobre restrições do UTL_SMTP no Autonomous AI Database.
Enviar E-mail do Autonomous AI Database Usando o DBMS_CLOUD_NOTIFICATION
Use o pacote DBMS_CLOUD_NOTIFICATION para enviar mensagens e consultar resultados como e-mail.
Enviar Mensagens como E-mail do Autonomous AI Database
Você pode usar o DBMS_CLOUD_NOTIFICATION para enviar mensagens como e-mail.
-
Identifique seu ponto final de conexão SMTP para o serviço Email Delivery. Talvez você precise assinar regiões adicionais do Oracle Cloud Infrastructure se o serviço Email Delivery não estiver disponível na sua região atual.
Por exemplo, selecione uma das opções a seguir para o ponto final de conexão SMTP:
-
smtp.us-phoenix-1.oraclecloud.com
-
smtp.us-ashburn-1.oraclecloud.com
-
smtp.email.uk-london-1.oci.oraclecloud.com
-
smtp.email.eu-frankfurt-1.oci.oraclecloud.com
Consulte Configurar Conexão SMTP para mais informações.
-
-
Gere credenciais SMTP para o serviço Email Delivery. O
UTL_SMTPusa credenciais para autenticar com servidores de Entrega de E-mail quando você envia e-mail.Consulte Gerar Credenciais SMTP para um Usuário para obter mais informações.
-
Crie um remetente aprovado para a Entrega de E-mail. Conclua esta etapa para todos os endereços com
UTL_SMTP.MAILusados como "From".Consulte Gerenciando Remetentes Aprovados para mais informações.
-
Permitir acesso SMTP para usuário ADMIN anexando uma Access Control Entry (ACE).
Por exemplo:
BEGIN -- Allow SMTP access for user ADMIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.us.example.com', lower_port => 587, upper_port => 587, ace => xs$ace_type(privilege_list => xs$name_list('SMTP'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db)); END; / -
Crie um objeto de credencial e use
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGEpara enviar uma mensagem como e-mail.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'EMAIL_CRED', username => 'username', password => 'password' ); END; / BEGIN DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE( provider => 'email', credential_name => 'EMAIL_CRED', message => 'Subject content', params => json_object('recipient' value 'mark@example.com, suresh@example.com', 'to_cc' value 'nicole@example.com, jordan@example.com', 'to_bcc' value 'manisha@example.com', 'subject' value 'Test subject', 'smtp_host' value 'smtp.email.example.com', 'sender' value 'approver_sender@example.com' ) ); END; /Use o parâmetro
paramspara especificar o remetente, smtp_host, assunto, destinatário e destinatários de um CC ou BCC nos valoresstring.-
remetente: especifica o ID do E-mail do remetente aprovado na Etapa 3.
-
smtp_host: especifica o nome do host SMTP da etapa 2.
-
assunto: especifica o assunto do e-mail.
-
destinatário: especifica os IDs de e-mail dos destinatários. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários.
-
to_cc: especifica os IDs de e-mail que estão recebendo um CC do e-mail. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários CC.
-
to_bcc: especifica os IDs de e-mail que estão recebendo um Cco do e-mail. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários com Cco.
Consulte Procedimento SEND_MESSAGE para obter mais informações.
-
Enviar Resultados da Consulta como E-mail do Autonomous AI Database
Você pode usar o pacote DBMS_CLOUD_NOTIFICATION para enviar os resultados de uma consulta como e-mail.
Para usar o DBMS_CLOUD_NOTIFICATION para enviar e-mail:
-
Identifique seu ponto final de conexão SMTP para o serviço Email Delivery. Talvez você precise assinar regiões adicionais do Oracle Cloud Infrastructure se o serviço Email Delivery não estiver disponível na sua região atual.
Por exemplo, selecione uma das opções a seguir para o ponto final de conexão SMTP:
-
smtp.us-phoenix-1.oraclecloud.com
-
smtp.us-ashburn-1.oraclecloud.com
-
smtp.email.uk-london-1.oci.oraclecloud.com
-
smtp.email.eu-frankfurt-1.oci.oraclecloud.com
Consulte Configurar Conexão SMTP para mais informações.
-
-
Gere credenciais SMTP para o serviço Email Delivery. O
UTL_SMTPusa credenciais para autenticar com servidores de Entrega de E-mail quando você envia e-mail.Consulte Gerar Credenciais SMTP para um Usuário para obter mais informações.
-
Crie um remetente aprovado para a Entrega de E-mail. Conclua esta etapa para todos os endereços com
UTL_SMTP.MAILusados como "From".Consulte Gerenciando Remetentes Aprovados para mais informações.
-
Permitir acesso SMTP para usuário ADMIN anexando uma Access Control Entry (ACE).
Por exemplo:
BEGIN -- Allow SMTP access for user ADMIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.us.example.com', lower_port => 587, upper_port => 587, ace => xs$ace_type(privilege_list => xs$name_list('SMTP'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db)); END; / -
Crie um objeto de credencial e use
DBMS_CLOUD_NOTIFICATION.SEND_DATApara enviar a saída de uma consulta como e-mail.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'EMAIL_CRED', username => 'username', password => 'password' ); END; / BEGIN DBMS_CLOUD_NOTIFICATION.SEND_DATA( provider => 'email', credential_name => 'EMAIL_CRED', query => 'SELECT tablespace_name FROM dba_tablespaces', params => json_object('recipient' value 'mark@example.com, suresh@example.com', 'to_cc' value 'nicole@example.com1, jordan@example.com', 'to_bcc' value 'manisha@example.com', 'subject' value 'Test subject', 'type' value 'json', 'title' value 'mytitle', 'message' value 'This is the message', 'smtp_host' value 'smtp.email.example.com', 'sender' value 'approver_sender@example.com' ) ); END; /Use o parâmetro
paramspara especificar o remetente, smtp_host, assunto, destinatário, destinatários de um CC ou BCC, a mensagem, o tipo de dados e o título nos valoresString.-
remetente: especifica o ID do E-mail do remetente aprovado na Etapa 3.
-
smtp_host: especifica o nome do host SMTP da etapa 2.
-
assunto: especifica o assunto do e-mail. O tamanho máximo é 100 caracteres.
-
receptor: Especifica os IDs de e-mail dos destinatários. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários.
-
to_cc: especifica os IDs de e-mail que estão recebendo um CC do e-mail. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários CC.
-
to_bcc: especifica os IDs de e-mail que estão recebendo um Cco do e-mail. Use uma vírgula entre os IDs de e-mail quando houver vários destinatários com Cco.
-
mensagem: especifica o texto da mensagem.
-
type: especifica o formato de saída como CSV ou JSON.
-
título: especifica o título do anexo da saída SQL. O título deve conter apenas letras, dígitos, sublinhados, hifens ou pontos como caracteres em seu valor devido ao uso para gerar um nome de arquivo.
O tamanho máximo da mensagem para uso com
DBMS_CLOUD_NOTIFICATION.SEND_DATApara notificação por e-mail é de 32k bytes.Consulte Procedimento SEND_DATA para obter mais informações.
-