SQL Server 2005 Express içinden CDO.Message Nesnesi ile Mail Göndermek

Kullanıcı Oyu:  / 0
En KötüEn İyi 

SQL Server 2005 Express sürümünde SQL Mail ve Database Mail özelliği yok. Aslında servis paketi kurduktan sonra geliyor ama bizim senaryoda servis paketi kurmak yok. Ayrıca mail adresleri veritabanından çekilmek veya sorgu içinde belirtilmek zorunda bizim senaryomuzda. Yoksa zaten SQL Scheduler programının mail özelliğinden yararlanırdık. Dolayısıyla tek seçeneğimiz Windows işletim sistemleri ile beraber gelen CDO.Message nesnesini kullanarak mail göndermek. Bir de SQL Scheduler'i kullanma sebebimiz, zamanlanmış görev olarak ve servis olarak çalıştırabilmek ve de işlemin başarılı olma veya olmama durumuna göre bilgi vermesi.

Aşağıdaki kodu SQL Scheduler içine yapıştırıp veritabanı adını, SMTP bilgilerini ve mesajı değiştirerek hatta mail adreslerini ve gönderilecek mesajları veritabanındaki tablolardan sorgu aracılığıyla çekerek daha gelişmişini yapabilirsiniz.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
USE veritabani
DECLARE @iMsg int
DECLARE @hr int
DECLARE @source varchar(255)
DECLARE @description varchar(500)
DECLARE @smtp_server varchar(500)
SET @smtp_server = 'mail.smtpsunucusu.com'
DECLARE @body NVARCHAR(1000)
-- CDO.Message nesnesinin olusturulmasi ve SMTP sunucu bilgilerinin nesneye verilmesi
EXEC @hr = sp_OACreate 'CDO.Message', @iMsg OUT
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value','2'
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value', @smtp_server
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value', 'cdoBasic'
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendusername").Value', ' Bu e-Posta adresi istenmeyen posta engelleyicileri tarafından korunuyor. Görüntülemek için JavaScript etkinleştirilmelidir. '
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value', 'sifre'
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value', 'FALSE'
EXEC @hr = sp_OASetProperty @iMsg, 'Configuration.fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value', '90'
EXEC @hr = sp_OAMethod @iMsg, 'Configuration.Fields.Update', NULL
-- Set the e-mail parameters.
EXEC @hr = sp_OASetProperty @iMsg, 'To', ' Bu e-Posta adresi istenmeyen posta engelleyicileri tarafından korunuyor. Görüntülemek için JavaScript etkinleştirilmelidir. '
EXEC @hr = sp_OASetProperty @iMsg, 'From', ' Bu e-Posta adresi istenmeyen posta engelleyicileri tarafından korunuyor. Görüntülemek için JavaScript etkinleştirilmelidir. '
EXEC @hr = sp_OASetProperty @iMsg, 'Subject', 'Mesaj Konu Basligi'
EXEC @hr = sp_OASetProperty @iMsg, 'Charset', 'Windows-1254'
-- If you are using HTML e-mail, use 'HTMLBody' instead of 'TextBody'.
SET @body = 'Merhaba, bu mesaj SQL sorgusu ile CDO.Message nesnesi kullanilarak gonderildi.'
EXEC @hr = sp_OASetProperty @iMsg, 'TextBody' ,@body
EXEC @hr = sp_OAMethod @iMsg, 'Send', NULL

Bu kodun çalışması için,

Named pipes enabled olmak zorunda.

Surface area confguration penceresinde en alttaki linke tıklayınca karşımıza gelen pencerede "enable ole automation" seçeneği enable olmak zorunda o zaman script mail gönderir.

Bilişim Haberleri

Windows Live Hotmail Türkiye Kullanım Sayıları

Internete her gün 32 milyon vatandaşımız erişiyormuş ve de 20 milyon kişi hem Hotmail mail hesabı hem de MSN instant messaging kullanıyormuş.

turkerHR Yayınlandı!

Kodları tamamen bana ait olan turkerHR yazılımımı hemen indirip kurup kullanabilirsiniz. Kaynak kodları herkese açık, şimdilik biraz kötü görünebilir, iyileştireceğim.

Joomla 1.6.1 Güvenlik Sürümü Yayınlandı

Joomla 1.6 kullananların 1.6.1 sürümüne güncelleme yapmaları gerekiyor güvenlik gereği.

PayPal ile Türk Lirası Kullanabiliriz

PayPal’ın ne zaman Türk Lirası ödemelerini kabul edeceğini merak ediyorsanız, artık ediyor.


Social Widget