Slanje emaila iz Oracle 11g baze podataka
June 18, 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