发送到电子邮件时不使用 HTML 内部样式

问题描述 投票:0回答:2

下面的SQL是使用sp_send_dbmail发送内部邮件。已收到电子邮件,但未使用内部样式。

  • 我确认我确实从外部接收带有 HTML 的电子邮件。它们显示正确。
  • 根据下面的代码,body_format 设置为 HTML

如何让电子邮件正确格式化并使用内部样式表?

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
html outlook html-email sp-send-dbmail
2个回答
0
投票

电子邮件客户端对某些 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/


0
投票

简短的回答是,

<style>
标签只有约 70% 的人支持。因此,您不应该使用头部样式,而应始终使用内联样式。

<body style="background-color: lightgrey;">
  Please do not reply to this email.<br><br>
</body>

在电子邮件中检查 HTML 和 CSS 支持的网站

现在更长的答案是回答你关于这是什么原因的评论。

我们必须回顾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 用例一起工作的主要原因。

© www.soinside.com 2019 - 2024. All rights reserved.