Selamlar...
Veritabanında e-posta ayarlarını yapmıştık. İlgili yazıya buradan ulaşılabilir. 
Peki bu ayarları nasıl kullanacağız?
Gerçek bir örnek verelim.
Bir firmada çalışıyorsunuz ve o gün doğum günü olan bir çalışan varsa tebrik mesajı atılması gerekiyor.
Adi, Soyadi, Aktif ve DogumTarihi alanlarından oluşan bir PERSONEL tablomuz olsun.
Her gün çalışacak bir veritabanı işi yazalım.
Bu iş o gün doğum günü olanları bulup otomatik doğum günü tebrik mesajı yollayacak.
Burada kritik noktalardan birisi <img src="cid:DogumGunu.jpg" /> ifadesi. Resmin yolunu parametre kısmında veriyoruz. Mesajın içerisinde ise id'sini veriyoruz. Diğer türlü resim gözükmeyebiliyor.
Bir diğer dikkat edilmesi gereken kısım da, isimlerin sonuna eklediğimiz ek. Bütün isimlerin sonuna aynı ek ifadesini eklemek çok hoş olmuyor. Ahmet Yıldız'in, Nurettin Küpür'in,...vs yerine uygun eki buluyoruz.
 
DECLARE @tableHTML NVARCHAR(MAX) ;
DECLARE @gununTarihi DATE ;
DECLARE @personelCursor CURSOR ;
DECLARE @personelAdiSoyadi NVARCHAR(100) = '';
DECLARE @adSoyadTumu NVARCHAR(250) = '';
DECLARE @ekKismi NVARCHAR(3) = '';
DECLARE @sonHarf NVARCHAR(1) = '';
DECLARE @toplamUzunluk INT = 0;
DECLARE @strGecici NVARCHAR(250) = '';
 
SET @gununTarihi = CONVERT(DATE, GETDATE(), 103) 
SET @personelCursor = CURSOR FAST_FORWARD 
    FOR SELECT p.Adi + ' ' + p.Soyadi As PersonelAdiSoyadi
        FROM   dbo.PERSONEL p 
        Where DATEPART(MONTH, p.DogumTarihi) = DATEPART(MONTH, @gununTarihi)
        And DATEPART(DAY, p.DogumTarihi) = DATEPART(DAY, @gununTarihi)
        And p.Aktif = 1
 
    OPEN @personelCursor 
         
    FETCH NEXT FROM @personelCursor INTO @personelAdiSoyadi
 
    WHILE @@FETCH_STATUS = 0 
      BEGIN
        SET @adSoyadTumu = @adSoyadTumu + ', ' + @personelAdiSoyadi
        FETCH NEXT FROM @personelCursor INTO @personelAdiSoyadi
      END
    CLOSE @personelCursor
    DEALLOCATE @personelCursor 
    IF (@adSoyadTumu <> '')
        BEGIN
        Set @adSoyadTumu = SUBSTRING(@adSoyadTumu, 3, LEN(@adSoyadTumu)-2);
        Set @toplamUzunluk = LEN(@adSoyadTumu);
        Set @sonHarf = SUBSTRING(@adSoyadTumu, @toplamUzunluk, 1);
        If (UPPER(@sonHarf) = 'A' Or UPPER(@sonHarf) = 'I') 
            Begin
                Set @ekKismi = 'nın';
            End
        Else If (UPPER(@sonHarf) = 'E' Or UPPER(@sonHarf) = 'İ') 
            Begin
                Set @ekKismi = 'nin';
            End
        Else If (UPPER(@sonHarf) = 'O' Or UPPER(@sonHarf) = 'U') 
            Begin
                Set @ekKismi = 'nun';
            End
        Else If (UPPER(@sonHarf) = 'Ö' Or UPPER(@sonHarf) = 'Ü') 
            Begin
                Set @ekKismi = 'nün';
            End
        Else
            Begin
                Set @strGecici = @adSoyadTumu;
                SET @toplamUzunluk = LEN(@strGecici); 
                WHILE (@toplamUzunluk > 1)
                   BEGIN   
                         SELECT
                            @strGecici = LEFT(@strGecici, @toplamUzunluk - 1); 
                            SET @toplamUzunluk = LEN(@strGecici); 
                            Set @sonHarf = SUBSTRING(@strGecici, @toplamUzunluk, 1);
                            If (UPPER(@sonHarf) = 'A' Or UPPER(@sonHarf) = 'I') 
                                Begin
                                    Set @ekKismi = 'ın';
                                    Break;
                                End
                            Else If (UPPER(@sonHarf) = 'E' Or UPPER(@sonHarf) = 'İ') 
                                Begin
                                    Set @ekKismi = 'in';
                                    Break;
                                End
                            Else If (UPPER(@sonHarf) = 'O' Or UPPER(@sonHarf) = 'U') 
                                Begin
                                    Set @ekKismi = 'un';
                                    Break;
                                End
                            Else If (UPPER(@sonHarf) = 'Ö' Or UPPER(@sonHarf) = 'Ü') 
                                Begin
                                    Set @ekKismi = 'ün';
                                    Break;
                                End
                   END
            End
        SET @tableHTML =
            N'<html><head></head><body>' +
            N'    <table style="width: 100%;">' +
            N'        <tr><td style="text-align:center"><img src="cid:DogumGunu.jpg" /></td></tr>' +
            N'        <tr><td style="text-align:center; font-family:''Monotype Corsiva''; font-size:x-large">' +
            N'            Bugün ' + @adSoyadTumu + '''' + @ekKismi + ' doğum günü...<br />' +
            N'            Doğum gününüzü kutlar,<br />' +
            N'            sevdiklerinizle birlikte<br />' +
            N'          daha nice mutlu yıllar geçirmenizi dileriz...' +
            N'            </td></tr>' +
            N'        <tr><td style="text-align:center; font-size:28.0pt;font-family:''Impact'',sans-serif; color:maroon">' +
            N'            <i>~ İnsan Kaynakları ~</i>' +
            N'            </td></tr>' +
            N'    </table>' +
            N'</body></html>' ;
     
            EXEC msdb.dbo.sp_send_dbmail
            @profile_name = 'otomatik',
            @recipients = 'tumfirma@firmaadi.com.tr',
            @blind_copy_recipients = 'sizinadresiniz@firmaadi.com.tr',
            @body = @tableHTML,
            @body_format = 'HTML',
            @file_attachments = 'c:/VTResim/DogumGunu.jpg',
            @subject = 'Doğum Günü' ;
    END
GO
 

Bu Sql'i her gün çalışacak bir işin için eklemek de çok basit.

 

  

 

 

 

 

 

Saygılar...

# Kategoriler : Sql Server Veritabanı
# Etiketler : Etiket Yok
# Yorumlar : 0 Yorum Yorum Yaz

Yorumlar

Yorum Eklenmemiş...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Arama
  Ara
Sayfalar
Takvim
<December 2018>
SMTWTFS
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
Bağlantılar