Poczta bazy danych SQL Server ma procedurę składowaną o nazwie sp_send_dbmail
którego możesz używać do wysyłania wiadomości e-mail z serwera SQL.
Możesz użyć tej zapisanej procedury, aby wysłać wyniki zapytania sformatowane do tabeli HTML.
Przykład
Oto przykład do zademonstrowania.
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';
W tym przypadku deklaruję zmienną o nazwie @body_content
i umieść w nim cały kod HTML. Dodaję też kilka stylów za pomocą CSS, aby tabela miała widoczne obramowania, nagłówki itp. Ta zmienna jest używana jako wartość @body
argument podczas wysyłania wiadomości e-mail z sp_send_dbmail
procedura.
Jeśli nie potrzebujesz żadnych stylów do zastosowania, po prostu usuń <style></style>
tagi i wszystko pomiędzy. W takim przypadku możesz również usunąć class="GeneratedTable"
nieco z rzeczywistej tabeli.
Jeśli chcesz zmienić style, sprawdź mój generator stołów na Quackit. Możesz go użyć do wygenerowania stylów tabeli, a następnie skopiować/wkleić te style do kodu, który trafia do Twoich e-maili.
Kod T-SQL przekazany do CAST()
funkcja zwraca wyniki zapytania, każdy w osobnym wierszu tabeli (<tr>
element), a każda kolumna w jej własnym <td>
element.
Pamiętaj, aby dołączyć @body_format = 'HTML'
. To właśnie wysyła wiadomość e-mail w formacie HTML. Jeśli to pominiesz (lub jeśli ustawisz go na TEXT
), odbiorca otrzyma surowy kod HTML zamiast wyrenderowanego kodu.