Email versenden

Mehr
8 Jahre 3 Monate her #1892 von asu
Email versenden wurde erstellt von asu
Sollte mal die Notwendigkeit bestehen eine email aus dem SQL-Server direkt auch „in hübsch“ zu versenden, da gibt es durchaus Wege und Möglichkeiten. Um jetzt nicht Visual Studio mit der Excel REST API ins Spiel zu bringen oder die Reporting Services, man kann auch eine email vom SQL-Server sehr einfach versenden lassen mit einen HTML Table im Body. Hier ein kleines SQL-Beispiel das als Vorlage dienen kann, wenn man, wie ich, nicht mit HTML und XML auf Du und Du steht. Wie man am Bsp. des Betrag erkennt, muss man das Ziel (Währungsdarstellung rechtsbündig) aufteilen, indem man einen Teil im SQL Part erledigt mit FORMAT() und einen Teil ([td/@align] = 'right') als Attribut bei dem Tag im XML unterbringt.


Code:
/***** Ein Datenbank E-Mail Konto muss auf dem jeweiligen SQL-Server unter VERWALTUNG eingerichtet sein! *****/ DECLARE @tableHTML nvarchar(max) SET @tableHTML = N'<H3><font face="Tahoma" color="#1f66e5">Vorfallübersicht!</H3>' + N'<p><font face="Tahoma" color="#008080"><b>Zahlen des laufenden Monats.</b>' + N'<table border="1" bordercolor="#D3D3D3" width="60%" summary="Finition de la page">' + --Begrenzt die Tabelle auf 60% der aktuellen Größe des Fensters N'<font face="Arial" color="black">' + N'<colgroup span="5" width="0*"></colgroup>' + N'<tr><th width=200 bgcolor="#1f66e5"><p><font color="#FFFFFF">Land</th>' + N'<th width=200 bgcolor="#1f66e5"><p><font color="#FFFFFF">Vorfalltyp</th>' + N'<th width=800 bgcolor="#1f66e5"><p><font color="#FFFFFF">Betrag</th>' + CAST ( ( SELECT td = dbo.Adressen.Ländercode , '', td = case dbo.GeschäftsvorfallArt.Typ when 120 then 'Wareneingang' when 200 then 'Ausgangsrechnung' end , '', [td/@align] = 'right', td = format(round(SUM(dbo.GeschäftsVorfall.GesamtNetto),2),'C','de-de') , '' FROM dbo.GeschäftsVorfall INNER JOIN dbo.GeschäftsvorfallArt ON dbo.GeschäftsVorfall.VorfallKürzel = dbo.GeschäftsvorfallArt.VorfallKürzel INNER JOIN dbo. Adressen ON dbo. Adressen.KorrNr = dbo.GeschäftsVorfall.KorrNr WHERE (dbo.GeschäftsvorfallArt.Typ = 200 OR dbo.GeschäftsvorfallArt.Typ = 120) AND (dbo.GeschäftsVorfall.Status = 'VBU' OR dbo.GeschäftsVorfall.Status = 'UEB') AND ( left( dbo.GeschäftsVorfall.VorfallDatum,6) = left(convert(varchar(8),getdate(),112),6) ) GROUP BY dbo.GeschäftsvorfallArt.Typ, dbo.Adressen.Ländercode order by dbo.GeschäftsvorfallArt.Typ, dbo.Adressen.Ländercode FOR XML PATH('tr'), TYPE ) AS NVARCHAR(MAX) ) + N'</table>' EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Intern', @recipients = 'max@mustermann.de', @copy_recipients = 'hilde@musterfau.de', @subject = 'Tägliche Übersicht der verbuchten Vorfälle', @body = @tableHTML, @body_format = 'HTML'

"Wer Rechtschreibfehler findet, darf sie behalten."
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

Signum Warenwirtschaftssysteme GmbH
Kasinostraße 2
DE-64293 Darmstadt

Tel: +49 (6151) 15 18 - 0
Fax: +49 (6151) 15 18 - 100
team@signum.info