msdb.dbo.sp_send_dbmail发送HTML邮件格式异常修正咨询
出现HTML标签直接显示、格式不生效的问题,核心原因是调用msdb.dbo.sp_send_dbmail时没有指定HTML格式的参数,存储过程默认将邮件内容识别为纯文本,因此不会解析任何HTML标签。
修正方案
1. 优化HTML内容结构(可选,提升邮件客户端兼容性)
原有代码中存在一段文本未包裹在<p>标签内,可能导致不同客户端渲染异常,优化后的变量构造代码如下:
Declare @body As nvarchar(max)=N'<HTML> <head> <meta charset="UTF-8"> </head> <body>' +N'<p>Hi '+@userId+'</p>' +N'<p>New amendment for act <b>'+@title+'</b> is added</p>' +N'<p>This amendment include changes to the Section: <b>'+@sectionid+'</b> and Title: <b>'+@title+'.</b></p>' +N'<p>You are receiving this message because you have added change alert notification on Section: <b>'+@sectionid+'.</b></p>' +N'</body></HTML>'
2. 补充邮件格式参数(必选,修复核心问题)
调用发送邮件的存储过程时,必须显式增加@body_format = 'HTML'参数,完整调用示例如下:
EXEC msdb.dbo.sp_send_dbmail @profile_name = '你的邮件配置文件名', -- 替换为你实际配置的DB Mail配置名 @recipients = '收件人邮箱地址', @subject = '法案变更提醒', @body = @body, @body_format = 'HTML'; -- 这行是修复的核心,必须显式指定为HTML格式
替换示例中的配置文件名、收件人地址等占位符为实际业务值即可,发送后邮件会正常渲染加粗效果、段落换行,不会再显示原始HTML源码。
内容的提问来源于stack exchange,提问作者Mohammad Asif
相关产品推荐
相关产品推荐

