Situatie
Pachetul UTL_MAIL a fost introdus în Oracle 10g pentru a oferi un API simplu care să permită trimiterea e-mailurilor din PL/SQL. În versiunile anterioare, acest lucru era posibil folosind pachetul UTL_SMTP, dar acest lucru necesita cunoștințe despre protocolul SMTP.
Setup
Pachetul este încărcat prin rularea următoarelor scripturi.
CONN sys/password AS SYSDBA
@$ORACLE_HOME/rdbms/admin/utlmail.sql
@$ORACLE_HOME/rdbms/admin/prvtmail.plb
În plus, parametrul SMTP_OUT_SERVER trebuie setat pentru a identifica serverul SMTP.
CONN sys/password AS SYSDBA
ALTER SYSTEM SET smtp_out_server=’smtp_server.domain.com’ SCOPE=SPFILE;
Restartarea bazei de date:
SHUTDOWN IMMEDIATE
STARTUP
Sugestia mea este să utilizați un mail relay pe serverul bazei de date, în loc să vă conectați direct la un server de e-mail extern.
Configurația unui mail relay poate fi simplă, cu o referință la „localhost” în parametrul SMTP_OUT_SERVER. Orice complexitate legată de conectarea la serverul dvs. de e-mail extern este apoi ascunsă în configurația mail relay
Trimiterea de e-mailuri
Odată cu finalizarea configurației, acum putem trimite un e-mail utilizând procedura SEND. Acceptă următorii parametri.
SENDER: Aceasta ar trebui să fie o adresă de e-mail validă.
RECIPIENTS: O listă de adrese de e-mail, separate prin virgulă.
CC : O listă opțională de adrese de e-mail separate prin virgulă.
BCC : o listă opțională de adrese de e-mail separate prin virgulă.
SUBJECT : linia de subiect pentru e-mail.
MESSAGE : Corpul e-mailului.
MIME_TYPE : Setat la „text/plain; charset=us-ascii’ implicit.
PRIORITY : (1-5) Setată implicit la 3.
REPLYTO: Introdus în 11gR2. O adresă de e-mail validă.
Mai jos este un exemplu de utilizare.
BEGIN
UTL_MAIL.send(sender => ‘eu@domain.com’,
recipients => ‘coleg1@domain.com,coleg2@domain.com’,
cc => ‘manager1@domain.com’,
bcc => ‘manager2@domain.com’,
subject => ‘UTL_MAIL Test’,
message => ‘Daca primesti mesajul , merge!’);
END;
/
Trimite e-mailuri cu atașamente
Pachetul acceptă și trimiterea de e-mailuri cu atașamente RAW și VARCHAR2 folosind pachetele SEND_ATTACH_RAW și, respectiv, SEND_ATTACH_VARCHAR2. Ele funcționează într-un mod similar cu procedura SEND, cu câțiva parametri suplimentari.
ATTACHMENT : Conținutul atașamentului. Acesta ar trebui să fie VARCHAR2 sau RAW, în funcție de procedura pe care o apelați.
ATT_INLINE : Indică dacă atașarea ar trebui să fie citită în linie. Implicit FALSE.
ATT_MIME_TYPE : Valoarea implicită este „text/plain; charset=us-ascii’.
ATT_FILENAME : Numele atașamentului.
Mai jos este un exemplu de trimitere a unui e-mail cu un atașament text.
BEGIN
UTL_MAIL.send_attach_varchar2 (
sender => ‘eu@domain.com’,
recipients => ‘coleg1@domain.com,coleg2@domain.com’,
cc => ‘manager1@domain.com’,
bcc => ‘manager2@domain.com’,
subject => ‘UTL_MAIL Test’,
message => ‘Daca primesti mesajul , merge!’,
attachment => ‘Acesta este conținutul atașamentului.’,
att_filename => ‘my_attachment.txt’
);
END;
/
Leave A Comment?