Procedure que envia e-mail Oracle 10g

DBA Geral (instalação, configuração do banco, scripts do Sql*Plus, shell scripts, batch scripts, etc...)
Responder
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Informações do Ambiente: windows
* Versão do Oracle: 10g
* Sistema Operacional: windows


Caros amigos estou tentando fazer uma proc que envia e-mail para me avisar em agumas ocasioes, mas sem sucesso.

Abaixo segue a procedure que peguei aqui no forum mesmo:

Me aparece o erro abaixo

ORA-29278: erro transiente de SMTP:421 Service not availabe

Selecionar tudo

CREATE OR REPLACE PROCEDURE send_mail IS
        C UTL_SMTP.CONNECTION;
        P_ORIGEM        VARCHAR2(100)   :='dsousa@empresa.com';
        P_DESTINO       VARCHAR2(100)   :='dsousa@empresa.com';
        P_COPIA         VARCHAR2(100)   :='dsousa@empresa.com';
        P_TITULO        VARCHAR2(100)   :='teste';
        P_ASSUNTO       VARCHAR2(100)   :='E-mail para teste Oracle: Douglas';
        P_TEXTO         VARCHAR2(200)   :='teste de acentuação, lição, concessão, visão';
 BEGIN
    --    c:= utl_smtp.open_connection('rpc.empresa.com',25);
        c:= utl_smtp.open_connection('rpc.empresa.com',587);
        utl_smtp.helo(c, 'rpc.empresa.com');
     --   utl_smtp.command (C, 'AUTH LOGIN');
     --   utl_smtp.command (C, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(('dsousa@empresa.com')))));
     --   utl_smtp.command (C, utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(('123')))));   --> senha

        UTL_SMTP.MAIL (C, ('<' || P_ORIGEM || '>')); /* E-mail de quem está mandando */
        UTL_SMTP.RCPT (C, ('<' || P_DESTINO|| '>')); /* Para quem vou mandar */
        UTL_SMTP.RCPT (C, ('<' || P_COPIA|| '>')); /* Para quem vou mandar */
        --
        utl_smtp.open_data(c);
        UTL_SMTP.WRITE_RAW_DATA( c,UTL_RAW.CAST_TO_RAW('From:'    ||P_ORIGEM||utl_tcp.CRLF));
        UTL_SMTP.WRITE_RAW_DATA( c,UTL_RAW.CAST_TO_RAW('To:'      ||P_DESTINO||utl_tcp.CRLF));
        UTL_SMTP.WRITE_RAW_DATA( c,UTL_RAW.CAST_TO_RAW('Cc:'      ||P_COPIA  ||utl_tcp.CRLF));
        UTL_SMTP.WRITE_RAW_DATA( c,UTL_RAW.CAST_TO_RAW('Subject:' ||P_ASSUNTO||utl_tcp.CRLF));
        --
        utl_smtp.write_data(c,' '||utl_tcp.CRLF);
        utl_smtp.write_raw_data(c,utl_raw.cast_to_raw(utl_tcp.CRLF||P_TEXTO));
        --
        utl_smtp.close_data(c);
        UTL_SMTP.QUIT (C);
        --
END;

Qualquer dica e bem vinda.

Abs.
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Vendo assim não tem nada de errado, porem a porta não é a 25, nesse caso parece que você está usando SSL, procede?

Oracle SMTP, e Oracle MAIL não tem suporte a SSL...

Exemplo de SSL é quando o servidor de email é redirecionado para o Google Apps.

=/
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Grande Diego.

Estou tentando colocar o smtp da empresa que e exchange, testei da 2 formas e o mesmo erro.

c:= utl_smtp.open_connection('rpc.empresa.com',25);
c:= utl_smtp.open_connection('rpc.empresa.com',587);

testei com o IP do exchange e nada.

Teria outra forma mais facil de enviar e-mail ?

Abs
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Certo,

lá do servidor do banco de dados Oracle, se você fizer um telnet no servidor smtp nesta porta, está conectando?

pois pode ser um bloqueio entre o servidor do banco e o servidor de smtp da sua empresa,

telnet smtp.suaempresa.com.br 25

se der conexao refused, é este o problema, firewall..

faça o teste aí e poste o resultado..
Avatar do usuário
madmax
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 293
Registrado em: Qua, 13 Dez 2006 5:02 pm
Localização: São Paulo
Contato:
________________________________
Douglas - Madmax.

Relamente diego com telnet houve falha.

Como o Exchange fica na Argentina deve estar barrando em Firewall.

Obrigado ate o momento.

Abs.
debby_acacio
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 51
Registrado em: Ter, 22 Jan 2008 11:38 am
Localização: Salvador - BA
Contato:

Oi Douglas teria como enviar um arquivo atachado com esta procedure ?

Estamos migrando e aqui na empresa usamos a mailto ...


Se alguém souber como faz, agradeço desde já.

Grata

Debby
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante