Database Mail SQL Server memiliki prosedur tersimpan yang disebut sp_send_dbmail
yang dapat Anda gunakan untuk mengirim email dari SQL Server.
Anda dapat menggunakan prosedur tersimpan ini untuk mengirim hasil kueri yang diformat ke dalam tabel HTML.
Contoh
Berikut ini contoh untuk didemonstrasikan.
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';
Dalam hal ini, saya mendeklarasikan sebuah variabel bernama @body_content
dan masukkan semua kode HTML ke dalamnya. Saya juga menambahkan beberapa gaya menggunakan CSS, sehingga tabel memiliki batas yang terlihat, header, dll. Variabel ini digunakan sebagai nilai @body
argumen saat mengirim email dengan sp_send_dbmail
prosedur.
Jika Anda tidak memerlukan gaya apa pun untuk diterapkan, cukup hapus <style></style>
tag dan segala sesuatu di antaranya. Dalam hal ini, Anda juga dapat menghapus class="GeneratedTable"
bit dari tabel yang sebenarnya.
Jika Anda ingin mengubah gaya, lihat generator tabel saya di Quackit. Anda dapat menggunakannya untuk menghasilkan gaya tabel Anda, lalu Anda dapat menyalin/menempelkan gaya tersebut ke dalam kode yang masuk ke email Anda.
Kode T-SQL diteruskan ke CAST()
fungsi adalah yang mengembalikan hasil kueri, masing-masing di baris tabelnya sendiri (<tr>
elemen), dan setiap kolom di dalam <td>
.nya sendiri elemen.
Pastikan untuk menyertakan @body_format = 'HTML'
. Inilah yang mengirim email dalam format HTML. Jika Anda menghilangkan ini (atau jika Anda menyetelnya ke TEXT
), penerima akan menerima kode HTML mentah, bukan kode yang diberikan.