下面的SQL是使用sp_send_dbmail发送内部邮件。已收到电子邮件,但未使用内部样式。
如何让电子邮件正确格式化并使用内部样式表?
declare @body nvarchar (max)
declare @subj nvarchar(300)
declare @clientname nvarchar(100)='myClient'
declare @DataCurrentAsOf nvarchar(100)='01/01/01'
SET @body ='
<!DOCTYPE html>
<html lang="en">
<style>
body {
background-color: lightgrey;
}
</style>
<body>
Please do not reply to this email.<br><br>
</body>
</html>
'
--SET @body = @body + @xml +'</table></body></html>'
Select @body
Set @subj='Daily Counts'
------------------------------------------------------------------------------
Execute msdb.dbo.sp_send_dbmail
@profile_name='myProfile',
@recipients = '[email protected]',
@body_format = 'HTML',
@body=@body,
@subject=@subj
电子邮件客户端对某些 CSS 和标记功能有很多不同级别的支持,包括声明的样式(在
head
甚至在body
)
一般来说,大多数电子邮件客户端最好能很好地支持内联样式。因此,将样式添加到 body 标签可能会获得更好的结果:
<body style="background-color: lightgrey;">
Please do not reply to this email.<br><br>
</body>
您可以在此列表中看到电子邮件客户端最常支持的示例(请检查移动设备,这是必须的,因为其中许多不支持桌面客户端上存在的许多常见样式功能)
https://templates.mailchimp.com/resources/email-client-css-support/
简短的回答是,
<style>
标签只有约 70% 的人支持。因此,您不应该使用头部样式,而应始终使用内联样式。
<body style="background-color: lightgrey;">
Please do not reply to this email.<br><br>
</body>
现在更长的答案是回答你关于这是什么原因的评论。
我们必须回顾W3C 规范的HTML 的历史。最后一个标准版本是 HTML4,这也是电子邮件支持 HTML4 比 HTML5 更可靠的原因。
HTML5 从未规范或指定!
HTML5从何而来?
HTML4 需要扩展,Mozilla 和 Opera 提议 HTM4 应该以向后兼容的方式扩展,连同错误处理和开放规范流程等其他内容。 W3C 于 2004 年 6 月针对该提案举办了一次研讨会,并予以否认。
结果,一个名为 WHATWG 的新开放组成立了。 WHATWG 制定了规范 recommendations,现在称为 HTML5,并由主要浏览器供应商实施。然而,缺少一个主要政党:微软宁愿坚持 W3C,因为 WHATWG 缺少专利政策。
这就是 IE 死亡和 Microsoft 服务(如 Outlook)仍然不能很好地与 WHATWG 推荐的 HTML 和更新的 CSS 用例一起工作的主要原因。