SQL Server Database Mail má uloženou proceduru nazvanou sp_send_dbmail
které můžete použít k odesílání e-mailů ze serveru SQL.
Tuto uloženou proceduru můžete použít k odeslání výsledků dotazu ve formátu tabulky HTML.
Příklad
Zde je příklad k demonstraci.
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';
V tomto případě deklaruji proměnnou s názvem @body_content
a vložte do něj veškerý HTML kód. Také přidávám některé styly pomocí CSS, aby tabulka měla viditelné okraje, záhlaví atd. Tato proměnná se používá jako hodnota @body
argument při odesílání e-mailu pomocí sp_send_dbmail
postup.
Pokud nepotřebujete použít žádné styly, jednoduše odstraňte <style></style>
tagy a vše mezi tím. V tomto případě můžete také odstranit class="GeneratedTable"
bit ze skutečné tabulky.
Pokud chcete změnit styly, podívejte se na můj generátor tabulek na Quackit. Můžete jej použít ke generování stylů tabulek, poté můžete tyto styly zkopírovat/vložit do kódu, který vám přijde do e-mailů.
Kód T-SQL předán do CAST()
Funkce je to, co vrací výsledky dotazu, každý ve svém vlastním řádku tabulky (<tr>
prvek) a každý sloupec ve svém vlastním <td>
prvek.
Nezapomeňte uvést @body_format = 'HTML'
. To je to, co odesílá e-mail ve formátu HTML. Pokud toto vynecháte (nebo pokud jej nastavíte na TEXT
), příjemce místo vykresleného kódu obdrží nezpracovaný kód HTML.