Oracle – Gerando Email pelo PL/SQL
Olá galera!
Hoje vamos abordar de forma bem simples, a geração de email pelo PL/SQL. Vamos trabalhar com o UTL_SMTP.
Vamos criar uma procedure de envio de e-mail, chamada Envia_Email. Nessa procedure, não vamos passar o email de quem está enviando por parâmetro, iremos deixar já definido no programa.
CREATE OR REPLACE PROCEDURE “ENVIA_EMAIL”
(
recipient IN VARCHAR2, — VARIAVEL QUE RECEBERA O EMAIL DE DESTINO
subject IN VARCHAR2, — ASSUNTO DO EMAIL
message IN VARCHAR2— MESSAGEM DO EMAIL
) IS
crlf VARCHAR2(2) := CHR(13) || CHR(10);
email_conexao utl_smtp.connection;
mailhost VARCHAR2(30) := ‘smtp01.us.oracle.com’;
mesg VARCHAR2(1000);
sender varchar2(1000) := ‘[email protected]’; — EMAIL DE QUEM ESTÁ ENVIANDO
BEGIN
email_conexao := utl_smtp.open_connection(mailhost,25);
mesg := ‘Date: ‘||TO_CHAR(SYSDATE,‘dd Mon yy hh24:mi:ss’)||crlf||
‘From: ‘||sender||”||crlf||
‘Subject: ‘||subject||crlf||
‘To: ‘||recipient;
utl_smtp.helo(email_conexao, mailhost);
utl_smtp.mail(email_conexao, sender);
utl_smtp.rcpt(connection, recipient);
utl_smtp.open_data(email_conexao);
utl_smtp.write_raw_data(email_conexao, utl_raw.cast_to_raw(mesg || crlf));
utl_smtp.write_raw_data(email_conexao, utl_raw.cast_to_raw(crlf || message));
utl_smtp.close_data(email_conexao);
utl_smtp.quit(email_conexao);
EXCEPTION
WHEN UTL_SMTP.INVALID_OPERATION THEN
dbms_output.put_line(SQLERRM||‘ – OPERAÇÃO INVÁLIDA SMTP.’);
WHEN UTL_SMTP.TRANSIENT_ERROR THEN
dbms_output.put_line(SQLERRM||‘ – PROBLEMAS COM ENVIO DO EMAIL.’);
WHEN UTL_SMTP.PERMANENT_ERROR THEN
dbms_output.put_line(SQLERRM||‘ – CÓDIGO INCORRETO NA TRANSAÇÃO DO SMTP.’);
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM||‘ – OUTROS.’);
END;
Para fazer a chamada da procedure, faça a chamada da procedure abaixo no seu programa.
ENVIA_EMAIL(‘[email protected]’,
‘Gerando Email pelo Oracle’,
‘A geração do Email foi um sucesso!);
Espero ter ajudado nessa tarefa e um forte abraço.
Referência: http://psoug.org/reference/utl_smtp.html
Administrador e coordenador do site!