为什么公司发送的电子邮件具有嵌套 table 结构?

Why companies send email with nested table structure?

我检查过许多公司,例如 facebook,发送的电子邮件具有 嵌套 table 结构,如下所示。

(我通过我的gmail账户查看了)

<table>
    <tbody>
        <tr>
            <td>
                <table>
                    <tbody>
                        <tr>
                            <td>
                                Some Header Contents
                            </td>
                        </tr>
                    </tbody>
                </table>
                <table>
                    <tbody>
                        <tr>
                            <td>
                                <table>
                                    <tbody>
                                        <tr>
                                            <td>
                                                Main Contents 1
                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                                <table>
                                    <tbody>
                                        <tr>
                                            <td>
                                                Main Contents 2
                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </td>
        </tr>
    </tbody>
</table>
  1. 为什么他们用<table>标签形成内容,而不是<div><p>

  2. 为什么他们使用 嵌套结构 并重复 <table>

大多数电子邮件客户端,包括网络邮件客户端,在 CSS 方面(有时是故意的)非常糟糕。因此,几乎不可能以在所有或大多数设备和客户端上看起来不错或至少相似的方式设计电子邮件样式。

其中一个问题是定位您的内容。所以唯一的方法就是使用 tables,就像我们在 CSS 出现之前在网页上使用的那样。所以电子邮件(特别是时事通讯)看起来与 20 年前的网页非常相似。

使用 tables,您可以控制宽度、高度、每行 table 单元格的数量、单元格间距(在 CSS 中:边距)、单元格填充、边框、对齐内容,您可以使用空字段作为间隔符。

而对于 tables,大多数时候需要使用嵌套的 tables 来获得您想要的结果。在开始添加可能也需要 table 的内容之前,您通常会为粗略结构设置一个 table,并在其中为每个部分设置一个 table。难以阅读,难以编写,难以维护,但唉,它仍然是唯一的方法。