- Beiträge: 156
- Dank erhalten: 19
Email versenden
- asu
-
Autor
- Offline
- Moderator
-
Weniger
Mehr
6 Jahre 2 Wochen her #1892
von asu
"Wer Rechtschreibfehler findet, darf sie behalten."
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.
/*****
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."
Bitte Anmelden oder Registrieren um der Konversation beizutreten.