Slanje emaila iz Oracle 11g baze podataka

Monday, 18.06.2012 – mradovan

UTL_MAIL je paket predstavljen u 10g verziji baze podataka. Omogućava jednostavno slanje emaila iz Oracle baze podataka jednim PL/SQL izrazom. Paket nije standardno instaliran prilikom instalacije baze podataka, što znači da ga treba naknadno instalirati i podesiti. Koraci su sljedeći:

1. Logirati se kao sys sa sysdba ulogom i pokrenuti izvšavanje instalacijskih skripti:

  • – sqlplus / as sysdba
  • – @$oracle_home\rdbms\admin\utlmail.sql;
  • – @$oracle_home\rdbms\admin\utlmail.sql;

2. Definirati init.ora parametar, pri čemu xxx.xxx.xxx.xxx je IP adresa DB servera:

a) ako je instanca startana sa SPFILE-om:

  • alter system set smtp_out_server=’xxx.xxx.xxx.xxx’ scope=both;

b) ako je instanca startana sa PFILE-om:

  • – alter system set smtp_out_server=’xxx.xxx.xxx.xxx’ scope=both;
  • – dodati u initSID.ora redak: smtp_out_server = ‘xxx.xxx.xxx.xxx’

3. Dodijeliti privilegije pokretanja procedura iz UTL_MAIL paketa korisniku koji će slati emailove (nazvat ćemo ga moj_korisnik):

  • grant execute on utl_mail to moj_korisnik;

4. Oracle 11g zahtijeva i Access Control List (ACL):

DECLARE
BEGIN
   DBMS_NETWORK_ACL_ADMIN.CREATE
    (
       acl => ‘utlmailpkg.xml’,
       description => ‘Slanje emaila’,
       principal => ‘MOJ_KORISNIK’,
       is_grant => true,
       privilege = ‘connect’
   );

   DBMS_NETWORK_ACL_ADMIN.ADD_PRIVLEGE
    (
       acl => ‘utlmailpkg.xml’,
       principal = ‘MOJ_KORISNIK’,
       is_grant = true,
       privilege = ‘resolve’
    );
   
   DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL
    (
       acl => ‘utlmailpkg.xml’,
       host => ‘xxx.xxx.xxx.xxx’,
       lower_port = 25,
       upper_port = NULL
    );

COMMIT;

END;

Provjera ispravnosti parametra:

  • select * from v$parameter where name = ‘smtp_out_server’;

Provjera ACL liste:

  • select * from dba_network_acls;

Slanje emaila:

exec sys.utl_mail.send
(
sender => ‘sender@mydomain.com’,
recipients => ‘recipient@domain.com’,
subject => ‘Naslov poruke’,
message => ‘Ovo je tijelo poruke u kojem mogu pisati svašta’
);
  1. One Response to “Slanje emaila iz Oracle 11g baze podataka”

  2. Ah sjecam se upgrade sa 10g na 11g i dernjave pojedinaca:”Zasto moja aplikacija ne radi nakon upgradea na 11g !?!? Sta ste opet sjebali? U petak je sve radilo kako treba, a danas nista !!!”

    Moje kontrapitanje: “Hmm, a jesi li testirao svoju aplikaciju na testnom serveru?”. Naravno da nije… A lijepo sam svim programerima rekao da provjere aplikacije u kojima se email salje iz baze…

    Usput mala napomena, koja ce mozda pomoci onima, koji salju velike attachmente iz baze: UTL_MAIL podrzava samo attachmente do 32 kB. Za vece attachmente cete morati koristiti UTL_TCP i UTL_SMTP.

    By Dejan on Jun 19, 2012

Post a Comment