Slanje emaila iz Oracle 11g baze podataka
Monday, 18.06.2012 – mradovanUTL_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’ );
One Response to “Slanje emaila iz Oracle 11g baze podataka”
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