Posta database di SQL Server dispone di una procedura memorizzata denominata sp_send_dbmail
che puoi utilizzare per inviare e-mail da SQL Server.
È possibile utilizzare questa procedura memorizzata per inviare risultati di query formattati in una tabella HTML.
Esempio
Ecco un esempio da dimostrare.
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';
In questo caso, dichiaro una variabile chiamata @body_content
e inserisci tutto il codice HTML al suo interno. Aggiungo anche alcuni stili usando CSS, in modo che la tabella abbia bordi visibili, intestazioni, ecc. Questa variabile è usata come valore di @body
argomento durante l'invio dell'e-mail con sp_send_dbmail
procedura.
Se non hai bisogno di alcuno stile da applicare, rimuovi semplicemente il <style></style>
tag e tutto il resto. In questo caso, puoi anche rimuovere la class="GeneratedTable"
bit dalla tabella effettiva.
Se vuoi cambiare gli stili, dai un'occhiata al mio generatore di tabelle su Quackit. Puoi usarlo per generare i tuoi stili di tabella, quindi puoi copiare/incollare quegli stili nel codice che va nelle tue e-mail.
Il codice T-SQL passato a CAST()
function è ciò che restituisce i risultati della query, ciascuno nella propria riga della tabella (<tr>
element) e ogni colonna all'interno del proprio <td>
elemento.
Assicurati di includere @body_format = 'HTML'
. Questo è ciò che invia l'e-mail in formato HTML. Se lo ometti (o se lo imposti su TEXT
), il destinatario riceverà il codice HTML grezzo, invece del codice renderizzato.