如何防止在使用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 |
+-----------+