Veritabanı Postası (Database Mail)

Eyl 06, 2013
İlk olarak Microsoft SQL Server 2005'te ortaya çıkan bir özellik olan Database Mail (Veritabanı Postası), SQL Veritabanı üzerinden e-posta göndermek için kullanılan bir araçtır. SQL Server’ın daha önceki sürümlerinde bulunan SQLMail yapısına göre daha gelişmiş özelliklere sahiptir. SQLMail'de e-posta gönderme protokolü olarak MAPI (Messaging Application Programming Interface - Mesaj Gönderme Uygulaması Programlama Arayüzü) kullanılır. Database Mail'de ise, SMTP (Simple Mail Transfer Protocol - Basit Posta Aktarım Protokolü) kullanılmaktadır. Bu protokol sayesinde, Database Mail (Veritabanı Postası) ile daha hızlı ve güvenli e-posta alışverişi sağlanmış olur.

  • Database Mail kullanarak e-posta göndermek için ilk önce kimlik oluşturulması ve hesap ayarlarının yapılandırılması gerekir.
  1. Microsoft SQL Server Management Studio programı çalıştırıldıktan sonra Object Explorer (Nesne Tarayıcısı) aracının içinde bulunan Management (Yönetimsel) dizininin altındaki Database Mail (Veritabanı Postası) sekmesi üzerine sağ tıklanır ve Configure Database Mail (Veritabanı Postası Yapılandır) seçeneği seçilir.




  2. Database Mail Configuration Wizard (Veritabanı Postası Yapılandırma Sihirbazı) penceresinde Next (İleri) sekmesi tıklanır.




  3. Select Configuration Task (Yapılandırma Görev Seçimi) penceresinde Set up Database Mail by performing the following tasks (Aşağıdaki işlemleri ugulayarak Veritabanı Postası kur) seçeneği işaretlenerek Next (İleri) sekmesi tıklanır.



  4. New Profile (Yeni Profil) penceresinde Profile Name (Profil Adı) ve Description (Açıklama) bölümlerine gerekli bilgiler yazılarak Add (Ekle) sekmesi tıklanır. Böylece profil oluşturma işlemi yapılmış olur.



  5. New Database Mail Account (Yeni Veritabanı Posta Hesabı) penceresinde Account Name (Hesap Adı) ve Description (Açıklama) bölümüne yazılmak istenen bilgiler yazılır. Outgoing Mail Server (Giden Posta Sunucusu) bölümünde, E-Mail address (E-posta adresi) kısmına e-posta hangi hesaptan gönderilecekse o e-postanın adresi yazılır. Display Name (Görüntülenen Ad) kısmına postada görünmesi istenen isim bilgisi, Reply e-mail (Yanıtlama Postası) kısmına isteğe bağlı olarak e-postanın yanıtının beklendiği adres ve Server Name (Sunucu Adı) ile Port Number (Port Numarası) kısımlarına hesabın bulunduğu giden posta sunucusunun adı ve port numarası yazılır.

    SMTP Authentication (SMTP Kimlik Doğrulama) bölümünde Basic Authentication (Temel Kimlik Doğrulama) sekmesi işaretlenerek User Name (Kullanıcı Adı) kısmına, oluşturulan hesabın e-posta adresi ve şifresi yazılır. OK (Tamam) sekmesi tıklanır. Böylece veritabanında e-posta hesabı oluşturulmuş olur.



  6. New Profile (Yeni Kimlik) penceresi yeniden ekrana gelir ve oluşturulan kimlik bilgileri ile hesap bilgileri bu pencerede görüntülenir. Next (İleri) sekmesi tıklanır.



  7. Manage Profile Security (Kimlik Güvenliğini Yönet) penceresinde Next (İleri) sekmesi tıklanır.



  8. Configure System Parameters (Sistem Değişkenlerini Yapılandır) penceresinde varsayılan sistem özellikleri ile ilgili yapılmak istenen bir değişiklik varsa yapılır ve Next (İleri) sekmesi tıklanır.



  9. Complete the Wizard (Sihirbazı Tamamla) penceresinde yapılmak istenen işlemlerin özeti görüntülenir ve Finish (Bitir) sekmesi tıklanarak işlemlerin yapılması için onay verilmiş olur. 



  10. Configuring (Yapılandırma) penceresinde hesap oluşturma, kimlik oluşturma ve oluşturulan hesabın kimliğe aktarılması işlemlerinin tamamlanması için bir süre beklenir ve sihirbazdan çıkmak için Close (Kapat) sekmesi tıklanır.

 

  • Kimlik oluşturularak hesap ayarları yapılandırıldıktan sonra ikinci aşama Database Mail (Veritabanı Postası) yapılandırmasıdır. Bunu gerçekleştirebilmek içinsp_configure prosedürü kullanılarak “Database Mail XPs” özelliğinin etkinleştirilmesi gerekir:

sp_CONFIGURE  'show advanced', 1
GO
RECONFIGURE
GO
sp_CONFIGURE  'Database Mail XPs', 1
GO
RECONFIGURE
GO 

Yukarıdaki kod parçası sorgu ekranına yazılarak çalıştırılırsa Database Mail (Veritabanı Postası) yapılandırması tamamlanmış olur. 

  • Bütün yapılandırmalar tamamlandıktan sonra veritabanı, e-posta göndermeye hazır hale gelir. E-posta gönderebilmek için sp_send_dbmail prosedürüne gerekli değişkenler (parameter) yazılarak prosedürün çalıştırılması gerekmektedir.

EXEC msdb.dbo.sp_send_dbmail 
@profile_name='Test Öğrenci', 
@recipients='testogrenci@itu.edu.tr', 
@subject='Deneme E-Postası', 
@body='Bu e-posta hesabınıza ulaştıysa Database Mail ayarları doğru bir şekilde yapılandırılmış demektir.',
@body_format = 'HTML' 

profil_name (kimlik adı) : Kimlik oluşturma sırasında kimlik bilgisine atanan isim buraya yazılır.
recipients (alıcılar) : Gönderilen postanın ulaşması istenen e-posta adresleri buraya yazılır.
subject (konu) : Postanın konusunun yazıldığı kısımdır.
body (içerik) : Postanın içeriğinin yazıldığı kısımdır.
body_format (biçim) : Postanın içeriğinin görüntüleneceği biçim özelliğinin yazıldığı kısımdır.

Prosedür çalıştırıldıktan sonra gönderilecek e-posta Service Broker (Hizmet Aracısı) tarafından sıraya alınır.

Database Mail (Veritabanı Postası) özelliği; giden ve gelen e-posta mesajlarını kopyalar ve "sysmail_allitems", "sysmail_sentitems", "sysmail_unsentitems", "sysmail_faileditems" tabloları içerisinde görüntüler. E-posta karşı tarafa başarılı bir şekilde gönderilmişse sysmail_mailitems tablosunun sent_status kolonu "1" değerini alır ve bu değer sysmail_sentitems tablosunda da görülebilir. Gönderimi başarısız olan postanın sent_status kolonundaki değeri "2" olur, postanın gönderimi iptal edilirse  "3" olarak değişir. sysmail_log tablosunda bulunan kayıtlar aşağıdaki kod parçası ile sorgulanabilir:

Use msdb
SELECT * FROM sysmail_mailitems
SELECT * FROM sysmail_sentitems
SELECT * FROM sysmail_log 

Bu sorgu ile, SQL Server'ın sistem dosyalarının yer aldığı msdb veritabanında bulunan gelen posta kutusu, gönderilen posta kutusu ve tarih bilgilerinin tutulduğu kayıtlar ekrana yazdırılır.