SQLMaile w formacie HTML

Standardowo maile wysyłane w usłudze SQLMail są w formacie tekstowym. Czasami jednak potrzebne jest skorzystanie z formatu HTML, aby np wysłać tabelkę lub po prostu „pokolorować” naszego maila ;). I tym się dziś zajmiemy.
Ogólnie opisując należy w treści maila wysłać kod HTML. Poniższy skrypt właśnie to robi.

Na początek coś prostego. W mailu wyślemy trzy teksty różnego koloru i pisane różną czcionką:

EXEC msdb.dbo.sp_send_dbmail
@profile_name = SQLMail_profile,
@recipients='micek1968@gmail.com',
@subject = 'Kolorowy Mail HTML',
@body = '<font color="green" face="arial"><i> Zielony tekst ARIAL <br /> </i></font>
<hr />
<font color="red" face="times"><i> Czerwony tekst TIMES <br /> </i></font>
<hr />
<font color="blue" face="courier"><i> Niebieski tekst COURIER <br /> </i></font>
',
@body_format = 'HTML' ;

W mailu otrzymamy

Teraz wyślemy coś bardziej skomplikowanego czyli wynik zapytania w formie prostej tabeli:

DECLARE @BodyText NVARCHAR(MAX);

SET @BodyText =
N’Lista pracowników w IT w roku 2021:<BR><BR>’ +
N'<table border=”1″ style=”width:30%;”>’ +
N'<tr>
<th style=”background-color:#FF0000″>Imię</th>
<th style=”background-color:#00FF00″>Nazwisko</th>’ +
CAST ( ( SELECT top(10) FirstName as 'td’,”,LastName as 'td’
from [AdventureWorks2012].[Person].[Person]
FOR XML PATH(’tr’), TYPE) AS NVARCHAR(MAX) ) +
N'</table>’ ;

exec msdb.dbo.sp_send_dbmail
@profile_name = SQLMail_profile
, @recipients = 'micek1968@gmail.com’
, @subject = 'Raport za 2021 rok’
, @Body = @BodyText
, @body_format = 'HTML’;

 

W wyniku wykonania tego skryptu otrzymamy na maila:

Na zakończenie jeszcze mail w formie HTMLa z załącznikiem graficznym.

create procedure sendMail (@attachement nvarchar(maX))
as
begin

DECLARE @body NVARCHAR(MAX)

SET @body ='<font color="green" style="font-size:30px" face="arial"><i> Kot z miasta Łodzi... <br /> </i></font>'
SET @body = @body

EXEC msdb.dbo.sp_send_dbmail
@profile_name = SQLMail_profile,
@body = @body,
@body_format ='HTML',
@recipients='micek1968@gmail.com',
@subject = 'Mail z załącznikiem' ,
@file_attachments = @attachement
End

Uruchomienie procedury wysyłającej maila z załącznikiem:

exec sendMail 'C:\TEMP\kotek.jpg'

W mailu otrzymamy:

Usunięcie procedury

drop procedure sendMail

Ten wpis został opublikowany w kategorii Microsoft SQL. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz