28 de ago. de 2007

Watcher - Procedure para envio de Emails

Olá a todos!!!
Hoje vou postar uma procedure que envia email's apartir do Oracle. Sua configuração é muito simples.

Para fazer a configuração você ira precisar de um servidor de SMTP caso seu servidor seja Microsoft, caso contrario é só apontar o servidor como localhost. O segundo passo é configurar o email que você vai mandar as mensagens, você pode usar qualquer email valido por exemplo silviosantos@sbt.com.br ou tomkite@oracle.com ou até mesmo luciano@oracle.com.br rs...

Para isso vamos utilizar um pacote de utilitários disponivel no Oracle chamado UTL_SMTP (Utilitários - Implementação do Simple Mail Transfer Protocol)

Segue abaixo o codigo fonte da procedure:

CREATE OR REPLACE PROCEDURE WATCHER(
v_ToAddr IN VARCHAR2,
v_Assunto IN VARCHAR2,
v_corpo IN VARCHAR2
) AS
v_FromAddr VARCHAR2(25) :=
'luciano@oracle.com.br'; --Email que voce quer usar de envio v_Message VARCHAR2(200);
v_MailHost VARCHAR2(50) := '10.42.2.17'; --Ip do servidor de SMTP
v_MailConnection UTL_SMTP.Connection;


BEGIN
/* Autor: Luciano Alvarenga Maciel Pires
Descrição: Envio de emails apartir de uma procedure */

v_Message := 'From: ' v_FromAddr CHR(10)
'Subject: ' v_Assunto CHR(10)
v_corpo;
-- Abrindo conexão com o servidor de email

--Aqui você tem a possibilidade de trocar a porta do servidor de SMTP
--em servidores UNIX coloque LOCALHOST
v_MailConnection := UTL_SMTP.OPEN_CONNECTION(v_MailHost,25);
-- Usando SMTP para enviar o email.

UTL_SMTP.HELO(v_MailConnection, v_MailHost);
UTL_SMTP.MAIL(v_MailConnection, v_FromAddr);
UTL_SMTP.RCPT(v_MailConnection, v_ToAddr);
UTL_SMTP.DATA(v_MailConnection, v_Message);
-- Fechar a conexão

UTL_SMTP.QUIT(v_MailConnection);
DBMS_OUTPUT.PUT_LINE('Email enviado com sucesso');
END WATCHER;

Para chamar a procedure basta executar o seguinte comando:

DECLARE
V_TOADDR VARCHAR2(200);
V_ASSUNTO VARCHAR2(200);
V_CORPO VARCHAR2(200);
BEGIN
WATCHER( V_TOADDR => 'remetente@oracle.com.br', V_ASSUNTO => 'Assunto do email', V_CORPO => 'Olá como vai??? Estou enviando esse email através do Oracle!' );
END;

Qualquer duvida ou sugestão me contatem por email.

Nenhum comentário: