SQL Server sp_send_dbmail阻止在正文中进行html编码



如何防止在使用SQL Server的sp_send_dbmail发送的电子邮件正文中进行编码?

示例:

EXEC msdb.dbo.sp_send_dbmail
@recipients='my.email@somedomain.com',
@subject = 'SQL email test',
@body = 'this+that',
@body_format = 'HTML'

我收到的电子邮件的html来源如下:

this`+`that

身体看起来很好:

this+that

但是,如果我希望SOURCE仍然具有+而不是+,该怎么办?

关于我为什么需要这样做的很久以前的故事,但解决这个问题会对我有很大帮助。有没有办法";逃逸;我身体参数中的+?或者有其他关于如何防止这种编码的想法吗?

您可以尝试进行一个简单的XML破解:

DECLARE @source VARCHAR(255) = 'this`+`that';
DECLARE @body VARCHAR(255)= CAST ( CAST ( 'this`+`that' AS XML ) AS VARCHAR(255) );
SELECT @body AS body;

返回

+-------------+
|    body     |
+-------------+
| this`+`that |
+-------------+

然而,这不会消除你的疑虑。如果需要,您可以向REPLACE添加一个调用:

DECLARE @body VARCHAR(255)= REPLACE ( CAST ( CAST ( 'this`+`that' AS XML ) AS VARCHAR(255) ), '`', '' );

结果是:

+-----------+
|   body    |
+-----------+
| this+that |
+-----------+

最新更新