通过 sp_send_dbmail 发送 HTML table 时使用超链接对行进行别名
Aliasing rows with hyperlinks when sending HTML table via sp_send_dbmail
我正在向用户发送 HTML table 电子邮件,但出于 space 原因,我想为超链接添加别名。请看图
这是图片的Sample1
:
请看我下面的代码:
DECLARE @bodyMsg nvarchar(max)
DECLARE @subject nvarchar(max)
DECLARE @tableHTML nvarchar(max)
SET @subject = 'Query Results in HTML with CSS'
DECLARE @email_to_notify nvarchar(256);
SELECT @email_to_notify = 'bens@ioec.co.za' ;
SET @tableHTML =
N'<style type="text/css">
...
</tr>' +
CAST ( (
SELECT
td = y.Customer,'',
td = y.ContractNumber,'',
td = y.Description ,'',
td = y.Market ,'',
td = y.BDM ,'',
td = y.EC ,'',
td = y.Reason ,'',
td = y.Link
FROM (SELECT FileReference AS 'Reference', Name AS 'Customer' ,
CASE WHEN ContractNumber IS NULL THEN '' ELSE ContractNumber END AS 'ContractNumber',
'http://gateway.ioec.co.za/#/trade/files/' + CONVERT(varchar(10),Gw_File.FileID) AS 'Link'
FROM Gw_File INNER JOIN ... ) y
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>'
EXEC msdb.dbo.sp_send_dbmail @recipients='rajivs@ioec.co.za',
@subject = @subject,
@body = @tableHTML,
@body_format = 'HTML' ;
我还想根据原因列的值突出显示行。
似乎当您传递标记时,您并没有保留它的类型。特殊字符,例如 <
将替换为字符串表示形式,以保持 xml 有效。例如 <
& <
和 &
& &
.
如果只是 >
和 <
符号,您可以在发送电子邮件之前使用替换:
SET @tableHTML = REPLACE(REPLACE(@tableHTML,'>','<'),'<','>');
但是,相信您没有嵌套 HTML。
我正在向用户发送 HTML table 电子邮件,但出于 space 原因,我想为超链接添加别名。请看图
这是图片的Sample1
:
请看我下面的代码:
DECLARE @bodyMsg nvarchar(max)
DECLARE @subject nvarchar(max)
DECLARE @tableHTML nvarchar(max)
SET @subject = 'Query Results in HTML with CSS'
DECLARE @email_to_notify nvarchar(256);
SELECT @email_to_notify = 'bens@ioec.co.za' ;
SET @tableHTML =
N'<style type="text/css">
...
</tr>' +
CAST ( (
SELECT
td = y.Customer,'',
td = y.ContractNumber,'',
td = y.Description ,'',
td = y.Market ,'',
td = y.BDM ,'',
td = y.EC ,'',
td = y.Reason ,'',
td = y.Link
FROM (SELECT FileReference AS 'Reference', Name AS 'Customer' ,
CASE WHEN ContractNumber IS NULL THEN '' ELSE ContractNumber END AS 'ContractNumber',
'http://gateway.ioec.co.za/#/trade/files/' + CONVERT(varchar(10),Gw_File.FileID) AS 'Link'
FROM Gw_File INNER JOIN ... ) y
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX) ) +
N'</table>'
EXEC msdb.dbo.sp_send_dbmail @recipients='rajivs@ioec.co.za',
@subject = @subject,
@body = @tableHTML,
@body_format = 'HTML' ;
我还想根据原因列的值突出显示行。
似乎当您传递标记时,您并没有保留它的类型。特殊字符,例如 <
将替换为字符串表示形式,以保持 xml 有效。例如 <
& <
和 &
& &
.
如果只是 >
和 <
符号,您可以在发送电子邮件之前使用替换:
SET @tableHTML = REPLACE(REPLACE(@tableHTML,'>','<'),'<','>');
但是,相信您没有嵌套 HTML。