Ceriwis  

Go Back   Ceriwis > HOBI > Komputer & Teknologi > Programming

Programming Share, tanya jawab, saling bantu antar programmer dengan berbagai macam bahasa pemrograman.

Reply
 
Thread Tools
  #1  
Old 20th November 2011
Permenkaret Permenkaret is offline
Ceriwiser
 
Join Date: Nov 2011
Posts: 351
Rep Power: 14
Permenkaret mempunyai hidup yang Normal
Default Membuat Stored Procedure SQL Server Untuk Mengirim E-mail Dengan Komponen JMail

Sebelum kita mulai maka ada baiknya untuk mengetahui sejenak yang dimaksud dengan stored

procedure. Stored procedure adalah sekumpulan perintah-perintah SQL yang tersimpan dalam SQL

Server. Procedure ini sudah dalam keadaan ter-compile di server dan siap dipanggil apabila

diperlukan. Untuk lebih jelasnya silakan Anda baca buku-buku SQL Server khususnya yang

menyangkut masalah stored procedure. OK, kita kembali lagi ke masalah utama. Stored procedure

yang akan kita buat kali ini adalah stored procedure untuk mengirimkan e-mail. Di dalam SQL

Server sendiri sebenarnya sudah terdapat stored procedure seperti ini yaitu xp_sendmail, hanya saja

lumayan ribet untuk men-setting feature SQL Mail di SQL Server ini. Ribetnya gimana sih? Ya

pokoknya ribet deh, sampai-sampai penulis saja masih bingung sampe detik ini.

Kita tinggalkan saja feature SQL Mail ini dan kita akan membuat stored procedure yang lain yaitu

dengan memanfaatkan object e-mail w3 JMail dari Dimac. JMail adalah suatu komponen COM

berupa file dll yang fungsinya dapat untuk mengirim atau menerima e-mail. Selain itu pada

komponen ini terdapat pula fasilitas enkripsi dan mail merge. Dan yang paling penting komponen

w3 JMail ini GRATIS, Anda bisa dapatkan di website-nya www.dimac.net. Penulis menggunakan

w3 JMail versi 4.3. Gimana sih kok SQL Server bisa mengakses komponen JMail untuk mengirim



file? Terimakasih kepada SQL Server yang sudah menyediakan beberapa built-in stored procedure

OLE automation. Stored procedure OLE automation di SQL Server adalah:

� sp_OACreate, untuk membuat instance dari suatu COM object

� sp_OADestroy, untuk menghapus instance dari suatu COM object

� sp_OASetProperty, untuk men-set properti dari suatu COM object dengan nilai yang baru

� sp_OAGetProperty, untuk mendapatkan nilai properti dari suatu COM object

� sp_OAMethod, untuk memanggil method dari suatu COM object

� sp_OAStop, wah kalo ini mah gue belon ngerti terjemahannya silakan baca help-nya

� sp_OAGetErrorInfo, untuk mendapatkan informasi error dari OLE automation

Penulis tidak akan membahas stored procedure OLE automation SQL Server pada tulisan ini. Hal

itu mungkin akan penulis sajikan pada kesempatan yang lain. Script stored procedure di bawah

penulis beri nama sp_SendMail_JMail dan memiliki sembilan parameter. Parameter utama yang

harus ada yaitu @RecAddr (alamat e-mail tujuan) dan @SMTPServer (alamat SMTP server). Jadi

untuk bisa mengirimkan e-mail Anda cukup mengisi dua parameter di atas, tentu saja dengan

parameter yang lain akan diisi dengan nilai default masing-masing. Untuk parameter lain penulis

kira sudah cukup jelas bagi pembaca (yang sudah mengerti stored procedure) tetapi mungkin masih

ada yang bingung antara parameter @Body dan @BodyFromFile. Dua parameter tersebut memiliki

fungsi yang sama hanya saja cara pengambilan datanya yang berbeda. Jika Anda ingin menulis

langsung body e-mail Anda pada saat menjalankan stored procedure maka Anda bisa menggunakan

parameter @Body, contohnya @Body='Ini body e-mail saya...'. Tetapi jika Anda ingin mengisi

body e-mail dengan text dari suatu text file di komputer Anda maka Anda bisa menggunakan

parameter @BodyFromFile, contohnya @BodyFromFile='c:�bodymail.txt'.

OK, sekarang silakan saja Anda ketik script stored di bawah ini pada SQL Query Analyzer atau

dapat juga melalui SQL Server Enterprise Manager.




Spoiler for sintax:






create procedure sp_SendMail_JMail

@FromAddr varchar(255) = '[email protected]', -- from e-mail

@FromName varchar(255) = 'SQL Server featuring JMail', -- from name

@RecAddr varchar(255), -- recipient address

@RecName varchar(255) = '', -- recipient name

@Attachment varchar(1000) = '', -- attach file path

@Subject varchar(255) = '', -- e-mail subject

@Body varchar(8000) = '', -- e-mail body

@BodyFromFile varchar(1000) = '', -- e-mail body that comes from file

@SMTPServer varchar(255)

as

declare @obj int

declare @res int

declare @ires int

declare @ires2 varchar(255)

exec @res = sp_OACreate 'jmail.Message', @obj out

if @res 0

begin

return 1

end

exec @res = sp_OAMethod @obj, 'AddHeader', NULL, 'App-Sender','SQL Server

featuring JMail (stored procedure)'

if @res 0

return 1

end

exec @res = sp_OASetProperty @obj, 'From', @FromAddr

if @res 0

begin

return 1

end

exec @res = sp_OASetProperty @obj, 'FromName', @FromName

if @res 0

begin

return 1

end

if @RecName = ''

begin

exec @res = sp_OAMethod @obj, 'AddRecipient', NULL, @RecAddr

if @res 0

begin

return 1

end

end

else

begin

exec @res = sp_OAMethod @obj, 'AddRecipient', NULL, @RecAddr,@RecName

if @res 0

begin

return 1

end

end

if @Attachment ''

begin

exec @res = sp_OAMethod @obj, 'AddAttachment', @ires2 out, @Attachment

if @res 0

begin

return 1

end

end

exec @res = sp_OASetProperty @obj, 'Subject', @Subject

if @res 0

begin

return 1

end

if @BodyFromFile ''

begin

exec @res = sp_OAMethod @obj, 'AppendBodyFromFile', NULL, @BodyFromFile

if @res 0

begin

return 1

end

end

else

begin

exec @res = sp_OASetProperty @obj, 'Body', @Body

if @res 0

begin

return 1

end

end

exec @res = sp_OAMethod @obj, 'Send', @ires out, @SMTPServer

if @res 0

begin

return 1

end

if @ires 1

begin

return 1

end

return 0











Sekarang Anda bisa meng-execute script di atas dan stored procedure akan otomatis tersimpan pada

database yang aktif saat Anda mengeksekusi script. Mari kita coba stored procedure yang baru kita

buat ini. Penulis akan memberi contoh untuk mengirim e-mail ke alamat [email protected]

dengan file attachment 'c:�data�mylove.gif' dengan menggunakan SMTP Server milik AriTech

Development Indonesia (mail.aritechdev.com). Berikut ini adalah contohnya:

declare @hasil

exec @hasil = sp_SendMail_JMail

@RecAddr='[email protected]', @Subject='Kepada Esa Ivani',

@SMTPServer='mail.aritechdev.com',@Body='Hello .... ini data file yang

diminta...',@Attachment='c:�data�mylove.gif'

Pada contoh diatas variabel @hasil akan menampung hasil kembalian dari eksekusi

sp_SendMail_JMail. Nilai variabel @hasil akan bernilai 1 apabila gagal dan 0 apabila sukses

mengirimkan e-mail.



tolong bantu rate dan jika berkenan

semoga membantu dan selamat belajar



Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


 


All times are GMT +7. The time now is 04:54 PM.


no new posts