Skip to main content

AccessTr.neT


SQL Server 2008 Kullanarak E-posta Göndermek

arzuu
arzuu
SQL
3
4437

SQL Server 2008 Kullanarak E-posta Göndermek

#1
SQL Server kullanarak e-posta nasıl gönderilecek bunu anlatacağım. Sql Server 2000 mail gönderme sistemine sahipti fakat mail gönderebilmek için mutlaka MAPI alt yapısına sahip bir sistem hazırlamamız şarttı. Bu yapı aynen Sql Server 2005’de de tüm özellikleriyle korunuyor. Ancak gerekli hatta olmazsa olmaz diyebileceğimiz geliştirme geldi ve Database Mail isimli yeni bir mail gönderme sistemi Sql Server 2005’e eklendi. En önemli özelliklerinden biri artık MAPI alt yapısına ihtiyaç duymadan herhangi bir SMTP sunucu tanımlanarak gönderim yapılabiliyor. Bunun anlamı gmail hesabınızı sisteme tanımlayarak Sql Server 2005 üzerinden mail gönderebileceğinizdir.
Güvenilirlik :
Database Mail, önemli özelliklerinden biri olarak ön plana çıkan Simple Mail Transfer Protocol (SMTP) kullanabilme yeteneği ile göz doldurduğu kadar mail gönderme işleminin SMTP sayesinde Sql Server’dan ayrılmış olması ile güvenilirliği de artırmıştır. Bu sayede mail gönderme işlemi sırasında
SQL Server 2005 çok daha az kaynak kullanarak performans kaybı yaşamayacak, herhangi bir dış kaynaklı sorundan ise etkilenmeyecektir. Yine Database Mail sisteminin gelişmiş özelliklerinden biri de SMTP sunucusunda oluşan herhangi bir sorunda gönderilecek mailleri beklemeye alıp SMTP sunucusundaki sorun giderildikten sonra tekrar gönderebilmesidir. Ayrıca bir Database Mail profili birden fazla SMTP sunucusu barındırabilir. Böylece kullanım dışı bir SMTP sunucusu varsa tanımlı diğer SMTP sunucuları üzerinden mail gönderimi yapılabilir. İlginç bir diğer özellik ise Html formatında mail gönderebilmeniz.

Object Explorer üzerinde görüldüğü gibi Database Mail, Management başlığı altına konumlandırılmış. Sql 2000’den aşina olduğumuz MAPI tabanlı Sql Mail sistemi ise yine aynı başlık altında Legacy (= miras) isimli alt başlık içerisine eklenmiş. Eklendiği yerin ismi gibi gerçekten Sql 2000’den miras kaldı.

[Resim: 30832173.png]

[Resim: 80288133.jpg]

Database Mail üzerine sağ tuşla kliklediğimizde açılan menüden ulaşabileceğimiz Configure Database Mail sihirbazına yine Database Mail üzerine çift tıklayarak da ulaşabiliyoruz.
Açılan sihirbaz basitçe bir profil tanımlayarak bu profil için SMTP sunucuları tanımlamanızı kolaylaştırıyor.

[Resim: 25908623.png]

[Resim: 35758034.png]

En üstteki seçenekle devam ettiğimizde profil tanımlaması yapabileceğimiz ve bu profile SMTP sunucuları tanımlayabileceğimiz ekran açılıyor. Öncelikle bir profil ismi girip açıklama bilgilerini doldurmamız yararlı olacaktır.Profil tanımlamalarını yaptıktan sonra ise SMTP accounts: bölümünden Add -> New Account tuşu ile SMTP sunucularını ekliyoruz. SMTP sunucularını eklerken bir isim verdikten sonra Outlook Express benzeri bir tanımlama ekranıyla SMTP sunucu adresini, kullanıcı adı ve şifreyi gerekli alanlara giriyoruz.

[Resim: 52695243.png]

[Resim: 92390980.png]

Birkaç SMTP sunucusu tanımladıktan sonra bunların önceliklerini de seçili sunucunun sırasını değiştirerek ayarlayabiliyoruz. Özellikle dikkat edeceğiniz nokta tanımlama yaparken Gmail gibi sunucularda “This server requires a secure connection(SSL)” işaretli olması gerekmektedir. Bunu öğrenmek için kullandığınız sunucunun bu özelliği destekleyip desteklemediğine bakmanız gerekmektedir. Eğer bu özelliği destekleyip siz kullanmazsanız e-posta göndermede “kullanıcı geçersiz” hatası alırsınız.

İşleme devam ettiğimizde aşağıdaki gibi sistem parametrelerini değiştirebileceğimiz bir yönetim ekranı açılacaktır. Burada gerekli ayarları da yaptıktan sonra Sql Server 2008′in profilimizi oluşturması ve accountları tanımlaması için devam edebiliriz.

[Resim: 73550434.png]

[Resim: 28088940.png]

Tüm bu işlemlerin ardından profilimiz oluşturulacak ve SMTP hesapları bu profille ilişkilendirilecektir.
Ölçeklenebilirlik :
Database Mail eş zamanlı olarak ve/veya arka planda çalışarak mail gönderme işlemlerini yapar. sp_send_dbmail stored procedure çağrıldığında Database Mail, Service Broker bekleme listesine bir istek sırası ataması yapar. Ardından stored procedure işletilerek dış mail sunucusuna istek gönderilir ve mail teslim edilir.
Çoklu profil desteği sayesinde birden fazla profil tanımlanabilir ve istenilen profil stored procedure parametresiyle belirlenerek mail gönderilebilir. Yine aynı şekilde çoklu SMTP hesabı desteğiyle bir profile birden fazla SMTP sunucusu tanımlanabilir. SMTP hesapları ve profiller birbirlerinden ayrı değerlendirildiği için aynı SMTP hesapları farklı profiller için kullanılabilir durumdadır.
Güvenlik :
Öntanımlı olarak Database Mail kullanımı kapalıdır. Bu yüzden Database Mail’i kullanabilmek için Sql Server Surface Area Configuration aracı kullanılarak Database Mail stored procedure kullanıma açılmalıdır.
Ancak daha önceden bahsettiğimiz gibi Sql Server 2008′de Surface Area Configuration aracı facet altındadır. Policy Management -> Facet -> Surface Area Configuration gelip sağ tıklayıp properties seçiyoruz.

[Resim: 11807635.png]

[Resim: 80916165.jpg]
Database Mail gönderebilmek için kullanıcının
DatabaseMailUserRole isimli veritabanı kullanıcı tanımına üye olması gerekir. Ayrıca profil güvenliği de mevcuttur. Buna göre tanımlayacağınız Database Mail profillerinden public olarak ayarlanan profil tüm msdb veritabanı kullanıcıları tarafından mail göndermek için kullanılabilecektir. Public olarak tanımlanmamış tüm diğer profillere ise ayrıntılı kullanıcı güvenlik ayarları tanımlanabilir.
Database Mail ile gönderilecek dosya boyutuna sınırlama getirilebilir. Bu konuda aktif bir yönetim sistemi bulunuyor. Yine gönderilecek dosyalarda uzantı sınırlaması da yapılabilir.
Kullanım :
Database Mail kullanımı sp_send_dbmail isimli stored procedure aracılığıyla yapılabiliyor. Kullanımı xp_sendmail yapısına benzemekle birlikte bir çok ek parametre desteklenmiş. Aşağıda tam bir sytax ve örnek bir kullanımı bulunuyor.

[Resim: 37257458.jpg]

DECLARE @email nvarchar(50)
DECLARE emailCursor CURSOR FOR
SELECT email FROM deneme;
OPEN emailCursor;
FETCH NEXT FROM emailCursor INTO @email
WHILE (@@FETCH_STATUS = 0)
BEGIN
EXEC msdb.dbo.sp_send_dbmail@profile_name='deneme',
@recipients=@email,@body='deneme',@body_format='HTML',
@subject='deneme';
FETCH NEXT FROM emailCursor INTO @email
END
CLOSE emailCursor
DEALLOCATE emailCursor
GO

Database Mail seçeneğine gelip “Send Test E-mail” tıklayarak sistemin çalışıp çalışmadığını kontrol edebilirsiniz.

Alıntıdır.
"Gülümsemenin, parasal değeri yoktur. Satın alınmaz, ödünç verilmez, dilenilmez, çalınmaz ama verilmedikçe hiç alınamaz."
Baştan sona Sql veritabanı oluşturma
Cevapla
#2
Paylaşımınız için teşekkürler sayın arzuu
Kaplumbağa ya dikkat et...
Sadece  başını çıkartıp risk aldığında ilerleyebiliyor...
Cevapla
#3
Sn Arzu hanım paylaşım için teşekkürler. Saygılar...
Bilgi paylaşıldıkça çoğalır....
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.


Access için her zaman lazım olacak konu başlıkları listesi


Cevapla
#4
yorumlarınız için teşekkürler arkadaşlar
"Gülümsemenin, parasal değeri yoktur. Satın alınmaz, ödünç verilmez, dilenilmez, çalınmaz ama verilmedikçe hiç alınamaz."
Baştan sona Sql veritabanı oluşturma
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da