自定义 Discourse 外部邮件模板

:bookmark: 本指南说明了如何自定义和设置 Discourse 站点发送的所有电子邮件的外部 HTML 模板的样式。

:person_raising_hand: 所需用户级别:管理员

您站点发送的所有电子邮件都封装在一个可以自定义的 HTML 模板中。

本指南涵盖:

  • 访问电子邮件样式自定义部分
  • 修改 HTML 模板
  • 添加自定义 CSS
  • 测试电子邮件模板
  • 恢复更改
  • 自定义模板示例
  • 与摘要电子邮件的交互
  • 更改电子邮件字体

访问电子邮件样式自定义

  1. 在您的 Discourse 站点中,导航到 Admin / Email / Appearance(管理 / 电子邮件 / 外观)。
  2. 您将看到一个编辑器,您可以在其中修改电子邮件模板的 HTML 和 CSS。

修改 HTML 模板

编辑器中的默认标记在 body 部分包含一个 %{email_content} 占位符。此占位符是每封电子邮件内容将被插入的位置。只要不删除此占位符,您可以对模板进行任何更改。

有关自定义替换 %{email_content} 占位符的内容的信息,请参阅如何自定义特定电子邮件模板

添加自定义 CSS

您可以使用“Email Style”编辑器中的 CSS 部分将内联样式注入到您的模板中。这是一个示例:

  1. 向模板中的 HTML 元素添加一个 CSS 类:

    <td> class="my-outer-td">
    </td>
    
  2. 在 CSS 编辑器中为该类创建一条规则:

    .my-outer-td {
      padding: 30px 0 30px 0;
    }
    

在发送电子邮件之前,Discourse 会用实际的 CSS 规则替换 CSS 类。您可以在此处添加任何您喜欢的 CSS 规则。

测试电子邮件模板

在各种电子邮件客户端中测试您的电子邮件模板更改至关重要,因为它们可能以不同的方式解释 HTML。使用电子邮件测试服务来预览您的电子邮件在不同客户端上的显示效果,尤其是在进行重大更改时。

恢复更改

要恢复您的模板自定义:

  1. 滚动到模板编辑器的底部。
  2. 点击“Reset to default”(重置为默认值)按钮。

此操作将用默认的 Discourse 电子邮件模板替换您的更改。

自定义模板示例

这是一个基本的电子邮件模板,将电子邮件的宽度限制为最大 600 像素,并在顶部添加一个徽标:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  </head>
  <body style="margin: 0; padding: 0;">
    <!--[if mso]>
    <style type="text/css">
      body, table, td, th, h1, h2, h3 { font-family: Helvetica, Arial, sans-serif !important; }
    </style>
    <![endif]-->
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr>
        <td style="padding: 10px 0 30px 0;">
          <!--[if gte mso 9]>
          <table width="600" align="center" cellpadding="0" cellspacing="0">
            <tr>
              <td>
          <![endif]-->
          <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;border-collapse: collapse;">
            <tr>
              <td style="padding: 20px 15px 20px 15px;">
                <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
                  <tr>
                    <td align="center">
                      <a href="https://forum.example.com">
                        <img src="https://your-site-logo-url" alt="Your site name" width="150" height="40" style="display: block;"/>
                      </a>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
            <tr>
              <td style="padding: 0 15px 0 15px;">
                <hr style="background-color: #ddd; height: 1px; border: 1px;" />
              </td>
            </tr>
            <tr>
              <td style="padding: 20px 15px 30px 15px; color: #153643; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 20px;">
                %{email_content}
              </td>
            </tr>
          </table>
          <!--[if gte mso 9]>
              </td>
            </tr>
          </table>
          <![endif]-->
        </td>
      </tr>
    </table>
  </body>
</html>

请记住将 srcalthref 属性替换为您站点的特定信息。

在不同屏幕尺寸上的显示效果

iPad Pro (10.5 英寸) (iOS 13.1):

Gmail (Chrome):

iPhone 11 Pro Max (iOS 13.1):

Outlook 2019 (Windows 10)

与摘要电子邮件的交互

如果您的自定义模板为所有电子邮件添加了徽标,则摘要电子邮件有两种选择:

  1. 要使用默认的摘要电子邮件样式:

    • 禁用 apply custom styles to digest(将自定义样式应用于摘要)站点设置。
  2. 要在所有通知电子邮件中保持一致的样式:

    • 移除设置为 digest logo(摘要徽标)站点设置的任何图像。
    • 在文本自定义 .../admin/customize/site_texts/user_notifications.digest.custom.html.header 中添加 <span></span>

更改电子邮件字体

要更改电子邮件中的字体:

  1. 使用网络安全字体以获得最大的兼容性。有关 Windows 和 Mac 上可用字体的列表,请参阅CSS 字体堆栈

  2. 将字体规则添加到您的 Discourse 电子邮件模板中。

  3. 您可以直接在 HTML 元素中设置字体,例如:

    <td style="font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 20px;">
      %{email_content}
    </td>
    

请注意,许多电子邮件客户端不支持来自外部服务的网络字体。

附加资源

有关创建 HTML 电子邮件的更多信息,您可以参阅这篇关于从头开始构建 HTML 电子邮件模板的综合指南

18 个赞

Thank @simon!

Could you be so kind to provide a full text of template? I would be happy to try it.

3 个赞

Thanks for pointing that out. It must have been a copy/paste error when I created the topic. I’ve added the full template to the post now.

3 个赞

How can we get the logo_url from Discourse in this template? is this possible?

1 个赞

The easiest way might be to open your browser’s web inspector on your DIscourse site and copy the value of the logo’s src attribute into the template. You could also get the logo URL from the rails console by looking at the value of the url property that is returned for SiteSetting.logo

4 个赞

Ok cool, this is how I’m doing it right now, thanks!

2 个赞

Very nice. I think this should be the default. Most sites use a centered column 600px wide.

Seems like there should be a separate wrapper to edit for digest emails.

2 个赞

如何更改电子邮件中的字体?谢谢。

1 个赞

我认为最安全的方法是使用网络安全字体。这里有一个关于哪些字体在 Windows 和 Mac 计算机上可用的好列表:https://www.cssfontstack.com/ 。您只需将 CSS 规则添加到 Discourse 电子邮件模板中的字体即可。

您可以尝试从外部服务引入网络字体用于您的电子邮件,但您需要注意,许多电子邮件客户端不支持网络字体。有关这方面的一些详细信息,请参阅:The Ultimate Guide to Web Safe Fonts for Email Marketing | Litmus

3 个赞

谢谢。我会使用一种网络安全字体。在上面的示例中,有一个 [if mso] 部分,但我看不到非 Outlook 客户端的字体设置位置。

1 个赞

在示例模板中,非 Outlook 电子邮件客户端的字体是通过直接添加到 HTML 元素的 CSS 规则来设置的。例如:

<td style="padding: 20px 15px 30px 15px; color: #153643; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 20px;">
    %{email_content}
</td>
2 个赞

是的,他们是。我将归咎于狭窄的移动屏幕,就这样吧 :slight_smile:

2 个赞

是否可以自定义头像旁边的文本字体?我的意思是,文本格式如下:

[真实姓名] [用户名]
[日期]

我已经能够更改电子邮件其余部分的文本,但上面的文本具有以下样式:

style=“color:#006699;; font-size:13px;font-family:‘lucida grande’,tahoma,verdana,arial,sans-serif;text-decoration:none;font-weight:bold; text-decoration: none; font-weight: bold; color: #006699;”

1 个赞

电子邮件模板中还有其他可用变量吗?

例如,使用 %{year} 会很有用,可以避免更新电子邮件页脚。有这个选项吗?

1 个赞