HTF Paketi Kullanarak Mail İçeriği Oluşturmak

Herkese Selam,

Bu yazıda Oracle Veritabanı üzerinden mail atarken, atılacak mailin içeriğini oluşturabildiğimiz tekniklerden biri olan HTF(hypertext function) paketinden biraz bahsedip bir örnek vereceğim. 

HTF paketi basit anlamı ile html tag i üreten ve bu tag ler içine veri yazmamızı sağlan paketlerden bir tanesi. Özellikle mail içeriğinde bir rapor sunucak isek, email içeriğinin derli toplu olması ve bir tablo içinde oluşması mailin okunabilirliği açısından oldukça önemlidir. HTF paketi ile bu amaca hizmet edecek mail içerikleri generate edip, ilgili kişilere veritabanı üzerinden gönderebiliriz. HTF paketi ile ilgili detay spec e ve özellikkeri aşağıdaki linkten erişebilirsiniz. 

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/w_htf.htm

Şimdi 2 tane fonksyon yazalım, bunlardan ilki bir mail template(bu örnek için tablo) oluştursun, diğeride oluşmuş template ‘in içeriğini doldursun. 

FUNCTION genarate_mail_template
RETURN CLOB
IS
mailtemplate CLOB;
BEGIN
DBMS_LOB.createtemporary (mailtemplate, TRUE);
mailtemplate := HTF.title (‘Querry’ || ‘–‘ || ‘Querry Report’)
|| CHR (10);
mailtemplate :=
mailtemplate
|| HTF.header (3,
‘Database’
|| ‘– ‘
|| ‘IO Querry Report’
|| ‘ ‘
|| TO_CHAR (SYSDATE, ‘DD/MM/YYYY HH24:MI:SS’),
‘CENTER’
)
|| CHR (10);
mailtemplate :=
mailtemplate
|| HTF.tableOpen (‘BORDER=1’, ‘CENTER’, NULL, NULL, ‘CELLPADDING=0’)
|| CHR (10);
mailtemplate := mailtemplate || HTF.tableRowOpen || CHR (10);
mailtemplate :=
mailtemplate
|| HTF.tabledata (HTF.strong (‘SQL ID.’), ‘CENTER’)
|| CHR (10);
mailtemplate :=
mailtemplate
|| HTF.tabledata (HTF.strong (‘SQL TEXT’), ‘CENTER’)
|| CHR (10);
mailtemplate :=
mailtemplate
|| HTF.tabledata (HTF.strong (‘DISK READS’), ‘CENTER’)
|| CHR (10);
mailtemplate :=
mailtemplate
|| HTF.tabledata (HTF.strong (‘OPERATION’), ‘CENTER’)
|| CHR (10);
mailtemplate :=
mailtemplate
|| HTF.tabledata (HTF.strong (‘OSUSER’), ‘CENTER’)
|| CHR (10);
mailtemplate :=
mailtemplate
|| HTF.tabledata (HTF.strong (‘TERMINAL’), ‘CENTER’)
|| CHR (10);
RETURN (mailtemplate);
END;

FUNCTION genarate_email_content (mailtemplate CLOB)
RETURN CLOB
IS
mailtext CLOB;
BEGIN
DBMS_LOB.createtemporary (mailtext, TRUE);
mailtext := mailtemplate;

FOR myrec IN curquerry
LOOP
mailtext := mailtext || HTF.tableRowOpen || CHR (10);
mailtext :=
mailtext || HTF.tabledata (myrec.sql_id, ‘CENTER’)
|| CHR (10);
mailtext :=
mailtext || HTF.tabledata (myrec.sql_text, ‘CENTER’)
|| CHR (10);
mailtext :=
mailtext || HTF.tabledata (myrec.disk_reads, ‘CENTER’)
|| CHR (10);
mailtext :=
mailtext || HTF.tabledata (myrec.operation, ‘CENTER’)
|| CHR (10);
mailtext :=
mailtext || HTF.tabledata (myrec.osuser, ‘CENTER’)
|| CHR (10);
mailtext :=
mailtext || HTF.tabledata (myrec.terminal, ‘CENTER’)
|| CHR (10);
END LOOP;

RETURN (mailtext);
END;

 

generate_mail_template metodu ile dolacak html imizi template olarak hazırladık, generate_email_content metodu ilede dönen template’imizin içinde cursor dan dönen data(all_) ile satır satır doldurduk. Bu aşamadan sonra elimizdeki text i utl_smtp aracılığı ile mail i alacak kişilere gönderebiliriz. Örnek çıktı aşağıdaki gibi olabilir.

Image

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Uncategorized and tagged , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s