MonTiLLa 1 Denunciar post Postado Março 28, 2007 Comunidade, Criei essa procedure para facilitar o envio de e-mails pelo Oracle. Para funcionar corretamente deve ter um servidor de e-mail configurado na rede. -- -- PROCEDURE PARA MANDAR E-MAIL -- CREATE OR REPLACE PROCEDURE ENVIA_EMAIL(MESSAGEM VARCHAR2, -- mensagem RECIPIENTE VARCHAR2, -- destinatario ASSUNTO VARCHAR2 -- assunto ) is -- -- VARIAVEIS -- ENVIAR VARCHAR2(50) := 'teste@eu.com.br'; -- email de quem esta enviando a mensagem HOSTEMAIL VARCHAR2(50) := 'mail.servidoremail.com.br'; -- caminho do servidor de email DATA VARCHAR2(255) default to_char( SYSDATE, 'dd Mon yy hh24:mi:ss' ); CONEXAO UTL_SMTP.CONNECTION; -- Abre conexao SMTP PROCEDURE send_header(name IN VARCHAR2, header IN VARCHAR2) AS BEGIN utl_smtp.write_data(CONEXAO, name || ': ' || header || utl_tcp.CRLF); END; BEGIN CONEXAO := utl_smtp.open_connection (HOSTEMAIL,25); -- abrindo conexao UTL_SMTP.HELO (CONEXAO,HOSTEMAIL); -- identificando o dominio do servidor smtp UTL_SMTP.MAIL (CONEXAO,ENVIAR); -- quem esta mandando mensagem UTL_SMTP.RCPT (CONEXAO,RECIPIENTE); -- quem vai receber mensagem UTL_SMTP.OPEN_DATA (CONEXAO); -- inicia o corpo da mensagem send_header('From', ENVIAR); -- quem esta mandando mensagem send_header('To', RECIPIENTE); -- quem vai receber mensagem send_header('Subject', ASSUNTO); -- assunto UTL_SMTP.WRITE_DATA (CONEXAO,MESSAGEM); -- escreve o corpo da mensagem a ser mandada UTL_SMTP.CLOSE_DATA (CONEXAO); -- fecha o corpo da mensagem e envia email UTL_SMTP.QUIT (CONEXAO); -- fechando a conexao Exception WHEN OTHERS THEN utl_smtp.quit (conexao); raise_application_error(-20011,'Não foi possível enviar o e-mail devido ao seguinte erro: ' || sqlerrm); END; / Pra testar pode ser utilizado EXEC ENVIA_EMAIL ('teste','bruno@gmail.com','teste'); http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Marlom 1 Denunciar post Postado Março 13, 2009 Olá, Sinceramente, analisei meio por cima sua procedure, mas abaixo segue uma que eu utilizo e funciona legal: PROCEDURE PR_ENVIAREMAIL (PEmailDe IN VARCHAR2 ,PEmailPara IN VARCHAR2 ,PDscMsg IN VARCHAR2 ,PServidorSmtp IN VARCHAR2) IS --Variável de Conexão com o servidor CONEXAO UTL_SMTP.CONNECTION; BEGIN --Agora, iremos abrir o objeto Conexão CONEXAO := utl_smtp.open_connection (PServidorSmtp,25); --Procedimento para iniciar E-mail. UTL_SMTP.HELO (CONEXAO,PServidorSmtp); --Procedimento para preencher o campo DE: do E-mail. (Remetente) UTL_SMTP.MAIL (CONEXAO,PEmailDe); --Procedimento para preencher o campo PARA: do E-mail (Destinatário) UTL_SMTP.RCPT (CONEXAO,PEmailPara); --Procedimento para criar o Corpo do E-mail UTL_SMTP.DATA (CONEXAO,PDscMsg); --Procedimento para encerrar o e-mail. UTL_SMTP.QUIT (CONEXAO); End; Atenciosamente, Marlom Malicheski Compartilhar este post Link para o post Compartilhar em outros sites