SQL Servers Databas Mail har en lagrad procedur som heter sp_send_dbmail
som du kan använda för att skicka e-post från SQL Server.
Du kan använda denna lagrade procedur för att skicka frågeresultat formaterade till en HTML-tabell.
Exempel
Här är ett exempel att visa.
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';
I det här fallet deklarerar jag en variabel som heter @body_content
och lägg in all HTML-kod i den. Jag lägger också till några stilar med hjälp av CSS, så att tabellen har synliga ramar, rubriker etc. Denna variabel används som värdet för @body
argument när du skickar e-postmeddelandet med sp_send_dbmail
förfarande.
Om du inte behöver använda några stilar, ta helt enkelt bort <style></style>
taggar och allt däremellan. I det här fallet kan du också ta bort class="GeneratedTable"
bit från den faktiska tabellen.
Om du vill ändra stilarna, kolla in min bordsgenerator på Quackit. Du kan använda den för att generera dina tabellstilar, sedan kan du kopiera/klistra in dessa stilar i koden som går in i dina e-postmeddelanden.
T-SQL-koden skickas till CAST()
funktion är det som returnerar frågeresultaten, var och en i sin egen tabellrad (<tr>
element), och varje kolumn inom sin egen <td>
element.
Se till att inkludera @body_format = 'HTML'
. Det är detta som skickar e-postmeddelandet i HTML-format. Om du utelämnar detta (eller om du ställer in det på TEXT
), kommer mottagaren att få den rå HTML-koden istället för den renderade koden.