微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL Server sp_send_dbmail阻止正文中的html编码

如何解决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

但是,如果我想让源仍然有+而不是+呢?

关于为什么需要执行此操作的悠久故事,但是解决此问题将极大地帮助我。有没有办法“逃脱”我的body参数中的+?还是关于如何防止这种编码的其他想法?

解决方法

您可以尝试做一个简单的XML hack:

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 |
+-----------+

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。