在 HTML 电子邮件中不指定字体大小有什么风险?

What are the risks of not specifying font size in an HTML email?

我构建 HTML 电子邮件已有一段时间,并且总是在我的代码中指定字体大小,例如

<h1 style="font-size: 24px">Hello Readers!</h1>
<p  style="font-size: 16px">Welcome to 2021!</p>

然而,浏览器和电子邮件客户端(Gmail、Outlook.com、iOS 上的 Mail 等)似乎都可以很好地应用基于 HTML 标签的适当样式。例如。以下 h1p 标签中的内容大小符合您的预期,即使代码中缺少 font-size 信息:

<!DOCTYPE HTML>
<html lang="en">
<head>
    <title>Font Size Test</title>
</head>
<body>
    <h1>Hello Readers!</h1>
    <p>It's been a long year...</p>
</body>
</html>

假设正在使用与内容相关的 HTML 标签(h1h2p 等),省略 font-size 的风险是什么来自 HTML 电子邮件代码,有效地将其委托给客户端/浏览器?

最明显的危险似乎是,如果不应用默认值,所有文本的大小都会相同,但这在现实世界中似乎不太可能?

编辑:

这个问题的动机是是否可以通过允许客户端/浏览器指定字体大小来提高可读性,而不是将其硬编码到电子邮件中,例如.

您可能会得到意想不到的结果。

我尝试了以下代码:

<!DOCTYPE HTML>
<html lang="en">
<head>
    <title>Font Size Test</title>
</head>
<body>
    <h1>Hello Readers!</h1>
    <p>It's been a long year...</p>
    <h2>In other news</h2>
    <p><span>This is done with a p and span</span></p>
    <h3>Now we're h3</h3>
    <strong>and let's try strong text</strong>
    <h4>But wait, there's more</h4>
    <table>
        <tr>
            <td>This is <u>in a</u> table with a <a href="https://www.google.com">link</a> too</td>
        </tr>
    </table>
    <hr>
    This is without any tag
</body>
</html>

三星的 header 标签没有 font-size:

当然,不指定 font-family 也会出现一些非常奇怪的结果——Times New Roman 是 Outlook 桌面的默认设置 (& freenet.de):

而不同的font-families有不同的字号。不指定 line-height 也会改变段落的高度,这会影响您的设计。

但在其他方面非常典型的回复——来自 Apple Mail:

这个(下)来自 Mail.ru 我认为有相当大的余量,因为我们也没有指定。

link 在测试中有时有下划线,有时没有。

All-in-all 如果您没有指定 font-size(尽管三星至少需要它),您会发现自己无论如何都需要指定其他所有内容,所以为什么不 font-size也是吗?

更新

我在插入标准包装纸时让三星工作。因此,省略 font-size 对所有情况都适用。

但是,如果您想在 <style> 标记中指定 font-size 一次 ,这将适用于除 Gmail 之外的所有内容 IMAP/POP 用户。 (有不同的 Gmail 版本:检查 https://www.hteumeuleu.com/2019/trying-to-make-sense-of-gmail-css-support-2019-edition/

这是我在三星使用的代码,并且指定了一次 font-size。另请注意,您必须小心捕获您使用的所有标签 - 不在标签内的文本显然不会被拾取(例如,如果您没有为 td 指定 font-size,则仅在 td 中)。

<!DOCTYPE HTML>
<html lang="en">
<head>
    <title>Font Size Test</title>
    <style>p {font-size: 24px}</style>
</head>
<body>
    <center style="width:100%;table-layout:fixed;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;">
        <div style="max-width:600px;">
            <!--[if (gte mso 9)|(IE)]>
            <table width="600" align="center" style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;border-spacing:0;font-family:Arial, sans-serif;color:#333333;" >
            <tr>
            <td style="padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;border-collapse:collapse;" >
            <![endif]-->
            <table align="center" style="border-collapse:collapse;mso-table-lspace:0pt;mso-table-rspace:0pt;border-spacing:0;font-family:Arial, sans-serif;color:#333333;margin:0 auto;width:100%;max-width:600px;">
                <tbody><tr>
                    <td style="padding-top:0;padding-bottom:0;padding-right:0;padding-left:0;border-collapse:collapse;">
    <h1>Hello Readers!</h1>
    <p>It's been a long year...</p>
    <h2>In other news</h2>
    <p><span>This is done with a p and span</span></p>
    <h3>Now we're h3</h3>
    <strong>and let's try strong text</strong>
    <h4>But wait, there's more</h4>
    <table>
        <tr>
            <td>This is <u>in a</u> table with a <a href="https://www.google.com">link</a> too</td>
        </tr>
    </table>
    <hr>
    This is without any tag
                    </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </center>
</body>
</html>