Ícone do site CooperaTI

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) := ‘charlesalberto2008@gmail.com’; — 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(‘carlosalbertoinfo@yahoo.com.br’,
                                  ‘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

Sair da versão mobile