Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Envio de E-mail utilizando SGDB Oracle 11G

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial Envio de E-mail utilizando SGDB Oracle 11G

    Beleza pessoal, como prometido vamos movimentar essa área destinada aos SGDB's.

    Neste post irei apresentar um procedimento para envio de emails no SGBD Oracle 11G.

    Envio de emails no próprio banco de dados é util em situações onde por exemplo, você deseja saber o status de uma procedure em execução.

    O procedimento para envio de emails pode ser visualizado abaixo:

    Código:
    create or replace
    procedure
       e_mail_message 
    ( 
       to_name varchar2,
       subject varchar2,
       message varchar2
    )
    IS
      L_MAILHOST    VARCHAR2(64) := <IP DO SERVIDOR DE EMAIL>;
      l_from        VARCHAR2(64) := <ENDERECO DE EMAIL DE ORIGEM>;
      L_TO          VARCHAR2(64) := to_name;
      l_subject     VARCHAR2(64) := subject;
      l_mail_conn   UTL_SMTP.connection;
    BEGIN
      l_mail_conn := UTL_SMTP.open_connection(l_mailhost, 25);
      UTL_SMTP.helo(l_mail_conn, l_mailhost);
      UTL_SMTP.mail(l_mail_conn, l_from);
      UTL_SMTP.rcpt(l_mail_conn, l_to);
     
      UTL_SMTP.open_data(l_mail_conn);
     
      UTL_SMTP.write_data(l_mail_conn, 'Date: '    || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || Chr(13));
      UTL_SMTP.write_data(l_mail_conn, 'From: '    || l_from || Chr(13));
      UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || l_subject || Chr(13));
      UTL_SMTP.write_data(l_mail_conn, 'To: '      || l_to || Chr(13));
      UTL_SMTP.WRITE_DATA(L_MAIL_CONN, ''          || CHR(13));
     
      UTL_SMTP.write_data(l_mail_conn, MESSAGE || Chr(13));
     
      UTL_SMTP.close_data(l_mail_conn);
     
      UTL_SMTP.quit(l_mail_conn);
    END;
    Observações sobre o procedimento:

    UTL_SMTP.open_connection(l_mailhost, 25): Abertura de conexão com o servidor smtp (l_mailhost = Host SMTP / segundo parametro = Porta SMTP)
    UTL_SMTP.close_data(l_mail_conn): Termino de escrita de dados.
    UTL_SMTP.quit(l_mail_conn): Finalização do email e sinalização que o mesmo esta pronto para envio.
    Chr(13): Quebra de linha


    Durante a execução do procedimento para envio de email, é possível que ocorra errros de ACL. Este erro pode ser visualizado abaixo.


    ERRO na linha 1:
    ORA-24247: acesso à rede negado pela ACL (access control list)
    ORA-06512: em "SYS.UTL_TCP", line 17
    ORA-06512: em "SYS.UTL_TCP", line 246
    ORA-06512: em "SYS.UTL_SMTP", line 115
    ORA-06512: em "SYS.UTL_SMTP", line 138
    ORA-06512: em line 11
    Para resolver este problema, execute como SYSDBA os comandos abaixo:


    Código:
    begin
     dbms_network_acl_admin.create_acl (
     acl => 'utl_mail.xml',
     description => 'Permite enviar e-mail',
     principal => 'USUARIO',
     is_grant => TRUE,
     privilege => 'connect'
     );
     commit;
     end;
     /
     
    begin
     dbms_network_acl_admin.add_privilege (
    acl => 'utl_mail.xml',
    principal => 'NOME DO USUARIO',
    is_grant => TRUE,
    privilege => 'resolve'
    );
    commit;
    end;
    /
     
    begin
     dbms_network_acl_admin.assign_acl(
    acl => 'utl_mail.xml',
    host => 'IP DO SMTP'
    );
    commit;
    end;
    /
    Bom amigos por hora é só, dúvidas só deixar a baixo.

    att. leinad .

    Quem não é visto, nunca é lembrado
    Similar Threads

  • Font Size
    #2
    Broder, não vai precisar dar os grants na acl e no dbms?
    Caso precise explica ai os comandos bl.
    Não Acha Estranha Essa Frase:
    Eu Sou Hacker e Uso Windows XP!

    Use Débian, Aprenda Slackware e Brinque Muito Com Back|Track


    Fã ->Nickguitar.dll


    Quer ajudar nossso fórum e não sabe como?
    Então click na imagem e ajude-nos com os links off

    Comment

    X
    Working...
    X