Anasayfa » SQL Server Database Mail ve Gmail ile Kullanımı

Makaleyi Paylaş

SQL Server

SQL Server Database Mail ve Gmail ile Kullanımı

En son yazımızda SQL Backup aldıktan sonra problem olduğunda problem var diye ya da problem olmadan backup aldığında da problem yok diye bilgilendirme yapabiliriz ama bunu sonraki bölümde anlatacağım demiştim.

İşte bu yazıda MSSQL üzerinde mail gönderme işlemi nasıl gerçekleştirilir konusunu anlatıyorum.

Bunun için herşeyden önce SQL Mail konfigürasyonunu yapmamız gerekiyor.

Ben örnek olsun ve herkes rahatça yapabilsin diye basitçe gmail hesabı üzerinden konfigüre edeceğim.


Bunun için management studio da management’ın altında Database Mail>Configure Database Mail menüsüne tıklıyoruz.

Henüz hiçbir kurulum olmadığı için Set up Database Mail fort he first time seçeneğini seçiyoruz.

Database Mail feature default olarak kapalı olduğu için onu açmamız gerekiyor. Yes diyoruz.

Açılan ekranda bir database mail profil oluşturuyoruz. Bunu mail gönderirken kullanacağız. Ben kısaca SQLMAIL diyorum.

Şimdi bir SMTP Account eklememiz gerekiyor. Add diyerek ekliyoruz.

Profili public olarak işaretliyoruz.

Finish diyerek işlemi tamamlıyoruz.

Artık SQL mail kurulumu tamamlandı. Şimdi denemesini yapalım.

Database mail üzerinde send test email diyoruz.

Şimdi deneme için kendimize mail gönderelim.

Mail gönderilmek üzere kuyruğa alındı dedi.

Bakalım gönderebilmiş mi?

Gördüğümüz gibi gönderemedi. Çünkü gmail’in güvenlik ayarları buna izin vermedi ve gmail bana uyarı maili gönderdi. Spam’lerin önüne geçmek için kullanılan bir önlem bu. Muhtemelen kurumsal mail adresinizi kullansanız bu sorunu yaşamayacaksınız.

Açılan ekranda güvenliği düşük uygulama erişimi linkine tıklıyoruz ve

Daha az güvenli uygulamalara izin ver özelliğini açıyoruz. Dediğim gibi bu durum gmail’e özel bir durum. Kurumsal hesaplarda büyük ihtimal sorun yaşanmayacaktır.

Şimdi tekrar deneyelim.

Görüldüğü gibi mail geldi.

Şimdi artık mail gönderebildiğimizi gördük. Şimdi sihirli cümle şu.

“SQL Server SQL dilinden başka bir şeyden anlamaz.”

O zaman bu mail gönderme işini yapan da bir sql kodu olmalı.

O da aşağıdaki gibi arkadaşlar.

Mail geldi.

Gördüğümüz gibi artık SQL ile mail gönderebiliyoruz. SQL Mail ile bir sorgunun çıktısı da gönderilebilir. Ancak biz sql mail’i daha çok özellikle sql server agent tarafındaki işleri kontrol etmek için kullanırız.

Örneğin sistemin backup alınamadığında mail atması, index bittiğinde mail atması gibi sebepler için bolca kullanırız.

Başka bir yazıda görüşmek dileğiyle.

Sağlıcakla…

Makaleyi Paylaş

6 Yorum

  1. Eline sağlık hocam.

    Cevapla
  2. Rica ederim Hakan hocam.

    Cevapla
  3. Emeğinize sağlık Ömer hocam.

    Cevapla
  4. Teşekkürler hocam, içeriklerinizi takip ediyorum, çok katkı sağladınız bana, mongodb ye de girmenizi çok isterim.
    Birazda benim katkım olsun;
    MSSQL express versiyonunda arayüz ile yapılmıyor ancak query ile yapmak mümkün, kendime not olarak almıştım ancak makale yazmaya fırsat bulamamıştım.

    EXECUTE msdb.dbo.sysmail_add_account_sp –sysmail_update_account_sp
    @account_name = ‘MailTest’,
    @email_address = ‘mailadres@gmail.com’,
    @display_name = ‘MailAdres’,
    @replyto_address = ‘mailadres@gmail.com’,
    @description = ‘Sent Mail using MSDB’,
    @mailserver_name = ‘smtp.gmail.com’,
    @mailserver_type = ‘SMTP’,
    @port = ‘587’,
    @enable_ssl = 1,
    @username=’mailadres@gmail.com’,
    @password=’ŞİFRE BURAYA’,
    @use_default_credentials = 0 ;

    EXECUTE msdb.dbo.sysmail_add_profile_sp
    @profile_name = ‘MailTest’,
    @description = ‘Profile used to send mail’

    EXECUTE msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = ‘MailTest’,
    @account_name = ‘MailTest’,
    @sequence_number = 1

    EXECUTE msdb.dbo.sysmail_add_principalprofile_sp
    @profile_name = ‘MailTest’,
    @principal_name = ‘public’,
    @is_default = 1 ;

    — Kayıları kontrol et
    SELECT *FROM msdb.dbo.sysmail_account
    SELECT *FROM msdb.dbo.sysmail_configuration
    SELECT *FROM msdb.dbo.sysmail_principalprofile
    SELECT *FROM msdb.dbo.sysmail_profile
    SELECT *FROM msdb.dbo.sysmail_profileaccount
    SELECT *FROM msdb.dbo.sysmail_profileaccount

    — mail logları- hata alınınca atar
    SELECT * FROM msdb.dbo.sysmail_log

    — Mail yollama
    exec msdb.dbo.sp_send_dbmail @profile_name = ‘MailTest’,
    @recipients = ‘mailadres@gmail.com’,
    @subject = ‘Mail Test’,
    @body = ‘Mail Sent Successfully’,
    @body_format = ‘text’

    –HATA ALINIRSA
    sp_configure ‘show advanced options’, 1;
    GO
    RECONFIGURE;
    GO
    sp_configure ‘Database Mail XPs’, 1;
    GO
    RECONFIGURE
    GO

    Gmail güvenliğini direkt açmak için aşağıdaki linke girip evet yapmak yeterli
    https://myaccount.google.com/u/0/lesssecureapps

    Ek olarak html olarak mail örneği de paylaşayım, hatta mail içerisinde tablo örneği de yaptım.
    Not: Html5 etiketleri kullanmamanız iyi olur, çoğu mail clientı desteklemiyor

    declare @sonuc nvarchar(max)
    declare @table nvarchar(max)
    declare @message nvarchar(max)
    declare @date datetime
    declare @ficheno nvarchar(250)
    declare @total float

    set @sonuc=’Sayın Yetkili,‘+
    ‘Örnek bir tablodur,’+
    ”+
    ‘Fiş NoTarihTutar’

    DECLARE testTable CURSOR FOR
    SELECT FICHENO,DATE_,NETTOTAL FROM FATURALAR
    OPEN testTable
    FETCH NEXT FROM testTable into @ficheno,@date,@total
    WHILE @@FETCH_STATUS = 0 BEGIN

    set @table=”+
    ”+isnull(@ficheno,’Fiş Numarası Boş Kontrol Et’)+”+
    ” +isnull(convert(nvarchar(10),@date,104),’Tarih Boş Kontrol Et’)+ ”+
    ” +isnull(cast(@total as nvarchar(10)),’Tutar Boş Kontrol Et’)+ ”+

    set @sonuc=@sonuc+@table
    FETCH NEXT FROM testTable into @ficheno,@date,@total
    END
    CLOSE testTable
    DEALLOCATE testTable
    set @message=(select @sonuc + ‘Bilginize,
    Bu bir test mailidir

    ‘)

    EXEC [msdb].[dbo].[sp_send_dbmail]
    @profile_name = ‘MailTest’,
    @recipients = ‘MailAdres@gmail.com’,
    @body = @message,
    @subject = ‘Deneme Html mail – Tablo örnekli’,
    @body_format=’HTML’

    Cevapla

Cevap bırakın

Email adresiniz gizli kalacak Zorunlu alanlar * olarak işaretlenmiştir

Bunları kullanabilirsinizHTML etiketler ve öznitelikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>