Пощата на базата данни на SQL Server има съхранена процедура, наречена sp_send_dbmail
които можете да използвате за изпращане на имейли от SQL Server.
Можете да използвате тази съхранена процедура, за да изпратите резултати от заявка, форматирани в HTML таблица.
Пример
Ето пример за демонстрация.
DECLARE @body_content nvarchar(max);
SET @body_content = N'
<style>
table.GeneratedTable {
width: 100%;
background-color: #ffffff;
border-collapse: collapse;
border-width: 2px;
border-color: #ffcc00;
border-style: solid;
color: #000000;
}
table.GeneratedTable td, table.GeneratedTable th {
border-width: 2px;
border-color: #ffcc00;
border-style: solid;
padding: 3px;
}
table.GeneratedTable thead {
background-color: #ffcc00;
}
</style>
<table class="GeneratedTable">
<thead>
<tr>
<th>ArtistId</th>
<th>ArtistName</th>
<th>ActiveFrom</th>
</tr>
</thead>
<tbody>' +
CAST(
(SELECT td = ArtistId, '',
td = ArtistName, '',
td = ActiveFrom, ''
FROM Music.dbo.Artists
FOR XML PATH('tr'), TYPE
) AS nvarchar(max)
) +
N'</tbody>
</table>';
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'DB Admin Profile',
@recipients = '[email protected]',
@body = @body_content,
@body_format = 'HTML',
@subject = 'As discussed';
В този случай декларирам променлива, наречена @body_content
и поставете целия HTML код в него. Също така добавям някои стилове с помощта на CSS, така че таблицата да има видими граници, заглавки и т.н. Тази променлива се използва като стойност на @body
аргумент при изпращане на имейла с sp_send_dbmail
процедура.
Ако не се нуждаете от прилагане на стилове, просто премахнете <style></style>
тагове и всичко между тях. В този случай можете също да премахнете class="GeneratedTable"
малко от действителната таблица.
Ако искате да промените стиловете, вижте генератора на таблици в Quackit. Можете да го използвате, за да генерирате стилове на таблицата си, след което можете да копирате/поставите тези стилове в кода, който влиза във вашите имейли.
T-SQL кодът се предава на CAST()
функцията е това, което връща резултатите от заявката, всеки в собствен ред на таблица (<tr>
елемент) и всяка колона в своя собствен <td>
елемент.
Не забравяйте да включите @body_format = 'HTML'
. Това е, което изпраща имейла в HTML формат. Ако пропуснете това (или ако го зададете на TEXT
), получателят ще получи необработения HTML код, вместо изобразения код.