FAQ |
Calendar |
![]() |
|
Programming Share, tanya jawab, saling bantu antar programmer dengan berbagai macam bahasa pemrograman. |
![]() |
|
Thread Tools |
#1
|
|||
|
|||
![]()
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 ![]() � 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 ![]() ![]() semoga membantu dan selamat belajar ![]() Terkait:
|
![]() |
|
|