SQL ile Mail Gönderme

SQL ile Mail Gönderme

MS SQL ile mail göndermek için aşağıdaki script kullanılabilir. SQL den mail atabilmek için öncelikle bir mail profili tanımlamak gerek bu örnekte yetkili1 isminde sql mail profili kullanılmıştır.

DECLARE @Body varchar(max)
DECLARE @TableHead varchar(max)
DECLARE @TableTail varchar(max)
DECLARE @Style as varchar(max)

Set @TableTail = '</table></body></html>';

Set @Style=
'<html>
<body>
<head>
<style>
table {
font-size: 95%;
font-family: Helvetica, verdana, sans-serif;
background-color: #fff;
border-collapse: collapse;
width: 800px;
line-height: 10px;
border: 2px solid #C1DAD7;
}

th {
color: #6D929B;
border: 1px solid #C1DAD7;
letter-spacing: 2px;
padding: 6px 6px 6px 12px;
background-color: #f2f2f2;
text-align: center;
line-height: 20px;
}

td {
border: 1px solid #C1DAD7;
padding: 6px 6px 6px 1px;
color: #6D929B;
text-align: center;
text-shadow: white 1px 1px 1px;
line-height: 20px;
}

tr:nth-child(even) {
background: #fff;
}

tr:hover {
background: #a0522d;
}
</style>
</head>'

--HTML şablonu--
Set @TableHead = @Style+'
<table>
<tr>
<th>Sicil</th>
<th>Adı</th>
<th>Soyadı</th>
<th>Unvan</th>
</tr>'

--Rapor içerik sorgusu--
Select @Body= (
Select
SICIL As [td],
ADI As [td],
SOYADI As [td],
UNVAN As [td]
FROM PERSONEL
WHERE SICIL IN ('1','2','3')
For XML raw('tr'), Elements)

-- Replace the entity codes and row numbers
Set @Body = Replace(@Body, '_x0020_', space(1))
Set @Body = Replace(@Body, '_x003D_', '=')
Set @Body = Replace(@Body, '<tr><TRRow>1</TRRow>', '<tr bgcolor=#C6CFFF>')
Set @Body = Replace(@Body, '<TRRow>0</TRRow>', '')

Set @Body = @TableHead + @Body + @TableTail

--Mail alıcısı,konu, SQL mail profili
EXEC msdb.dbo.sp_send_dbmail
@recipients='deneme@gmail.com',
@body_format='HTML',
@body=@Body,
@subject ='Personel Listesi',
@profile_name ='yetkili1'

--Sonuç

 

Sicil

Adı

Soyadı

Unvan

123

DENEME

DENEK

MÜDÜR YARDIMCISI

 


İlgili Yazılar