Çoğu web siteleri yeni açılan hesapları doğrulamak için kayıt esnasında girilen eposta adreslerine bir doğrulama kodu veya linki göndermekteler. Bu işlem temelinde basit bir mantığa dayanmaktadır. Bu yazımızda bu işlemin T-SQL ile sadece SQL Server üzerinde nasıl yapıldığını gösteren bir sistem oluşturacağız.
Bu işlem için SQL Server’ın sağlamış olduğu trigegr ve e-posta gönderme özelliklerini kullanacağız. İşlemin bel kemiğini oluşturan e-posta gönderme servisinin ayarlanmasını aşağıdaki videodan izleyebilirsiniz.
SQL Server üzerinden mail gönderimini sağlayan stored procedure için de aşağıdaki videodan faydalanabilirsiniz.
Gerekli ön bilgileri de aldıktan sonra şimdi de işlemlerimize başlayabiliriz. Aşağıdaki kodlardan faydalanarak kullanıcılar tablomuzu oluşturalım.
create table Kullanicilar(
Id int primary key identity,
KullaniciAd varchar(30) not null unique,
Ad nvarchar(50) not null,
Soyad nvarchar(50) not null,
TamAd as concat_ws(' ', Ad, Soyad),
Mail varchar(50) not null unique,
Parola varchar(20) not null,
GirisTarih datetime default getdate(),
GirisKod int null,
GirisKodOnay bit not null default 0,
)
Tablomuzu da oluşturduğumuza göre şimdi de yeni kullanıcı kaydedildiğinde otomatik tetiklenecek trigegr’ımızı yazalım.
create trigger HesapAktiflestirmekod
on Kullanicilar
after insert
as
declare @id int,
@tamAd nvarchar(100),
@mail varchar(50),
@kod int,
@mesaj nvarchar(max)
declare cls cursor for select Id,TamAd, Mail from inserted
open cls
fetch next from cls into @id, @tamAd, @mail
while @@FETCH_STATUS = 0
begin
set @kod = RAND() * 55000 + 10000
update Kullanicilar set GirisKod = @kod where Id = @id
set @mesaj = concat('<html><body> Sayýn ', @tamAd, ' <br/>',
'Sisteme kayıt için gerekli tek kullanımlık şifreniz: <b>', convert(nvarchar, @kod), ' </b><br/>',
'Tek kullanımlık şifrenizi kimse ile paylaşmayınız.'
)
exec msdb.dbo.sp_send_dbmail
@profile_name = 'Genel',
@recipients = @mail,
@body = @mesaj,
@subject = 'Sistem Hesabı Aktifleştirme Kodu',
@body_format = 'HTML'
fetch next from cls into @id, @tamAd, @mail
end
close cls
deallocate cls
Kod içerisinde kullanılan Cursor için de aşağıdaki yazıya göz atabilirsiniz.
T-SQL Cursor Kullanımı – Sait ORHAN