SQL Server ile HTML Mail Göndermek

Arkadaşlar Merhaba,

Bu yazımda sizlere SQL Server ile nasıl HTML formatında mail gönderebileceğimizi anlatacağım. Ben konuyu SQL Server 2014 Enterprise sürümü üzerinde göstereceğim. Bildiğiniz üzere bazen bir takım raporları özet bir şekilde kullanıcılara ulaştırmak gerekebilir ya da elektrik, su, telefon gibi faturalar hakkkında son kullanıcılara bilgilendirme yapmak amacıyla mail kullanılabilir. Bunu yapmak için tabiki de piyasada birçok yöntem var. Ben size SQL Server ile istediğimiz verileri nasıl HTML Tablo olarak gönderebileceğimizi basitçe anlatmaya çalışacağız. Tasarımı ilerletmek isterseniz bu sizin hayalgücünüze ve yeteneğinize kalmış 🙂

Öncelikle başlamadan önce SQL Server’da SMTP Mail ayarlarınızı yapmanız gerekiyor. Bunun için SQL Server’da Database Instance’nıza bağlandıktan sonra açılan ağaç yapısından önce Management ardından Database Mail‘e gelip sağ tıklayıp Configure Database Mail demeniz gerekiyor. Akabinde buradan ayarlarınızı yapabilirsiniz.

SQL Server Database Mail Ayarları

SQL Server Database Mail Ayarları

Şimdi sıra geldi SQL ile nasıl mail göndereceğimize. Ben basitçe BORSA veritabanımdaki HISSE tablosundaki BANVT hisse senedine ait ilk 10 kaydı mail ile göndereceğim ve bunun için aşağıdaki gibi bir stored procedure oluşturacağım.

CREATE PROCEDURE [dbo].[ebs_MailGonder]

AS

SET NOCOUNT ON

declare @sonuc nvarchar(max)
declare @table nvarchar(max)
declare @message nvarchar(max)
declare @tarih datetime
declare @hisse nvarchar(250)
declare @fiyat float

set @sonuc='<html><body><p><font size="2" face="Tahoma">Sayın <b>Yetkili,</b><br /><br />BANVT hissesine ait fiyat bilgileri aşağıdaki gibidir.</p><br /><table border="1" cellpadding="0" cellspacing="0" width="50%"><th bgcolor="#000000"><font color="#5FB404">Hisse</font></th><th bgcolor="#000000"><font color="#5FB404">Tarih</font></th><th bgcolor="#000000"><font color="#5FB404">Fiyat</font></th>'

DECLARE cursHISSE CURSOR FOR
SELECT TOP 10 HISSE,TARIH,FIYAT FROM HISSE WHERE HISSE='BANVT'

OPEN cursHISSE
FETCH NEXT FROM cursHISSE into @hisse,@tarih,@fiyat
WHILE @@FETCH_STATUS = 0 BEGIN

 set @table='<tr><left><td align="center" bgcolor="#BDBDBD">'+isnull(@hisse,'')+'</td><td align="center" bgcolor="#BDBDBD">'+isnull(convert(nvarchar(10),@tarih,104),'')+'</td><td align="center" bgcolor="#FFBF00">'+isnull(cast(@fiyat as nvarchar(10)),'')+'</td></center></tr>'

 set @sonuc=@sonuc+@table

FETCH NEXT FROM cursHISSE into @hisse,@tarih,@fiyat
END
CLOSE cursHISSE
DEALLOCATE cursHISSE

set @message=(select @sonuc + '</table><br />Bilginize,<br /><br /><img src="http://sqlbak.com/blog/wp-content/uploads/2013/10/sql-server-logo.png"></img><br />----------------------------------------------------
<br />Bu e-posta mesajı ve ekleri sadece gönderildiği kişi veya kuruma özeldir.<br />
Doğru alıcıya ulaşmamış olması halinde, bu mesajın başka bir alıcıya yönlendirilmesi, kopyalanması veya kullanılması yasaktır.<br />
----------------------------------------------------<br />
This e-mail and any attachments transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.<br />
If you are not the intended recipient you are hereby notified that any forwarding, copying or use of the information is prohibited.
</font></body></html>')

EXEC [msdb].[dbo].[sp_send_dbmail] @profile_name ='EBI', @recipients = 'adsoyad@adsoyad.com.tr', @body = @message, @subject = 'Hisse Raporu',@body_format='HTML'

Kodumuzda son satırda yer alan @profile_name kısmı sizin SMTP ayarlarında oluşturduğunuz profile denk gelmektedir. Burayı kendinize göre değiştirmeyi unutmayın.

Stored Procedure’umuzu oluşturduktan sonra aşağıdaki gibi çalıştırıyoruz.

exec dbo.ebs_MailGonder

Mail (Id: 1) queued. şeklinde mail’in kuyruğa alındığını ve eğer kuyrukta başka mail yoksa gönderileceğini işaret eden bir mesaj alacaksınız.

Ardından kullanıcıya şu şekilde bir mail gelecek.

SQL Server Mail Örneği

SQL Server Mail Örneği

Kolay gelsin, iyi çalışmalar 🙂

SQL Server ile HTML Mail Göndermek” Hakkında 3 Yorum

  1. Merhaba, emeğinize sağlık öncelikle. Ancak bir problemim var. Bu şekilde gönderimi yapıyor. TR karakterler düzgün değil. ı=i, ş=s olarak görünüyor. SQL Server Collation = “SQL_Latin1_General_CP1_CI_AS”, DB nin ki de aynı görünüyor. Ne yaptımsa bu sorunu düzeltemedim. SQL Server 2005 Kullanıyorum. ERP nedeniyle Collation değiştiremiyorum.
    Saygılar.

Onur Yurtsever için bir cevap yazın Cevabı iptal et