• 2 Aralık 2021 15:11

Sait ORHAN

Öğretmek için Öğrenin- Öğrenmek için Öğretin

T-SQL Trigger ile Hesap Aktifleştirme Kodu Üretme ve Kullanıcıya Mail Atma

BySait ORHAN

Oca 3, 2021

Ç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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.