История: у нас есть требование периодически отправлять клиенту запросы с просьбой о повторной сертификации их профилей, которые есть в нашей системе. Конечно, это происходит вручную, но мы решили автоматизировать его, используя возможности электронной почты SQL Server.
Мое решение: я сейчас работаю над текстом письма, которое затем будет отправлено клиенту по электронной почте. В теле необходимо указать контактную информацию и таблицу с каждым процессом, который необходимо переаттестовать.
Проблема: Трудность, с которой я сталкиваюсь, заключается в том, что, хотя я двигаюсь (похоже) сверху вниз, созданное мной тело письма HTML не форматируется должным образом, и я не могу скажи почему нет.
Вот мой код SQL
WITH htmlresult AS (
SELECT
''AS RowNumber
,'<html><head><title></title></head>
<body> <BR>' AS HtmlData
UNION ALL
select top 1
''AS RowNumber
, 'Date: ' + CAST(GETDATE() AS VARCHAR(12)) + '<BR><BR> ' +
'Re: Annual Re-certification Information Profiles' + '<BR><BR> ' +
'Contact Name: ' + dbo.DueTempTbl.[Contact] + '
Email: ' + dbo.DueTempTbl.[EMAIL] + ' <BR>' +
'GenName: ' + dbo.DueTempTbl.[GenName]+ '<BR> ' +
'GenNumber: ' + dbo.DueTempTbl.[Gen#] + '<BR><BR> ' AS
HtmlData
FROM dbo.DueTempTbl
WHERE [RECERTDUE] Between DATEADD(DAY, -180, GETDATE()) And DATEADD(DAY,
+60, GETDATE())
AND ((dbo.DueTempTbl.[Terr])='AZ1') AND ((LTrim(RTrim([EMAIL])))<>'')
AND [Gen#]=623113
UNION ALL
SELECT
'' AS RowNumber
, 'The annual re-certification of your information profiles are due for
those expiring <BR> in the next ninety (90) days. ' +
'It is necessary to complete this re-certification in advance to ensure no
<BR> interruption of future service. <br><br>' AS HtmlData
union all
SELECT '' AS RowNumber
,' <br><br><table><tr style="background-color: #5D7B9D; font-weight: bold;
color: white;">
<td>ID Number</td><td>Description</td><td>Recert Due Date</td></tr>' AS
HtmlData
Union All
SELECT ROW_NUMBER() OVER (ORDER BY [IDNumber]) AS RowNumber
,'<td>' + CAST([IDNumber] as VARCHAR(10)) + '</td><td>' + RTrim([WasteName])
+ '</td>' +
'<td>' + CAST([RECERTDUE]as VARCHAR(12)) + '</td>' AS HtmlData
FROM dbo.DueTempTbl
WHERE [RECERTDUE] Between DATEADD(DAY, -180, GETDATE()) And DATEADD(DAY,
+60, GETDATE())
AND [Gen#]=623113
SELECT HtmlData =
CASE RowNumber%2
WHEN 0 THEN '<tr style="background-color: #F7F6F3">' + HtmlData +
'</tr>'
ELSE '<tr>' + HtmlData + '</tr>'
END
FROM htmlresult
UNION ALL
SELECT '</table><BR><BR> Thank you for allowing us to provide you with
reliable and safe service. <BR> ' +
'We strive for excellence in providing these services and we hope
that this has been your <BR> experience ' +
'with us.</body></html>'
Вот результат, который я ожидал
<html>
<head>
<title></title>
</head>
<body>
<BR>Date: Sep 7 2018
<BR><BR> Re: Annual Re-certification of Information Profiles
<BR><BR> Contact Name: Paul Bunyan Email:
Bunyan@SomeCompany.com
<BR>Gen Name: Some Company
<BR>Gen Number: 623113<BR><BR>
<table>
<tr style="background-color: #F7F6F3">The annual re-certification of your
Information Profiles are due for those expiring <BR> in the next ninety (90)
days. It is necessary to complete this process in advance to ensure no <BR>
interruption of service. <br><br></tr>
<tr style="background-color: #F7F6F3"> <br><br><table><tr style="background-
color: #5D7B9D; font-weight: bold; color: white;">
<td>IDNumber</td><td>Decription</td><td>Recert Due Date</td></tr></tr>
<tr><td>780877</td><td>quas vidit docendi pro</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780878</td><td>Lorem ipsum
dolor</td><td>Sep 13 2018 </td></tr>
<tr><td>780879</td><td>sit amet</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780880</td><td>uisset eligendi
ius</td><td>Sep 13 2018 </td></tr>
<tr><td>780881</td><td>vix illum commune</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780882</td><td>mea omnesque
liberavisse</td><td>Sep 13 2018 </td></tr>
<tr><td>780883</td><td>suscipiantur cu</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780884</td><td>cam appareat mei
ut</td><td>Sep 13 2018 </td></tr>
<tr><td>780885</td><td>sit maiorum repudiare</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780886</td><td>olum dicat
fabellas</td><td>Sep 13 2018 </td></tr>
<tr><td>780937</td><td>vidit docendi pro</td><td>Sep 13 2018 </td></tr>
</table><BR><BR>
Thank you for allowing us to provide you with reliable and safe services. We
strive for excellence in providing these services and we hope that this has
been your
<BR> experience with us.
</body></html>
А вот что я получил
<tr style="background-color: #F7F6F3">
<html>
<head>
<title></title>
</head>
<body>
<BR>Date: Sep 7 2018
<BR><BR> Re: Annual Re-certification of Information Profiles
<BR><BR> Contact Name: Paul Bunyan Email:
Bunyan@SomeCompany.com
<BR>Gen Name: Some Company
<BR>Gen Number: 623113<BR><BR>
<BR>Date: Sep 7 2018
<BR><BR> Re: Annual Re-certification of Information Profiles
<BR><BR> Contact Name: Paul Bunyan Email:
Bunyan@SomeCompany.com
<BR>Gen Name: Some Company
<BR>Gen Number: 623113<BR><BR>
<tr style="background-color: #F7F6F3">The annual re-certification of your
Information Profiles are due for those expiring
<BR> in the next ninety (90) days. It is necessary to complete this process
in advance to ensure no <BR> interruption of service. <br><br></tr>
<tr style="background-color: #F7F6F3"> <br><br><table><tr style="background-
color: #5D7B9D; font-weight: bold; color: white;">
<td>IDNumber</td><td>Decription</td><td>Recert Due Date</td></tr></tr>
<tr><td>780877</td><td>quas vidit docendi pro</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780878</td><td>Lorem ipsum
dolor</td><td>Sep 13 2018 </td></tr>
<tr><td>780879</td><td>sit amet</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780880</td><td>uisset eligendi
ius</td><td>Sep 13 2018 </td></tr>
<tr><td>780881</td><td>vix illum commune</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780882</td><td>mea omnesque
liberavisse</td><td>Sep 13 2018 </td></tr>
<tr><td>780883</td><td>suscipiantur cu</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780884</td><td>cam appareat mei
ut</td><td>Sep 13 2018 </td></tr>
<tr><td>780885</td><td>sit maiorum repudiare</td><td>Sep 13 2018 </td></tr>
<tr style="background-color: #F7F6F3"><td>780886</td><td>olum dicat
fabellas</td><td>Sep 13 2018 </td></tr>
<tr><td>780937</td><td>vidit docendi pro</td><td>Sep 13 2018 </td></tr>
</table><BR><BR> Thank you for allowing us to provide you with reliable and
safe services. We strive for excellence in providing these services and we
hope that this has been your <BR> experience with us.</body></html>
(SQL Server 2008R2)
Еще один взгляд на это будет высоко ценится! Спасибо!