Discourse の外側メールテンプレートのカスタマイズ

:bookmark: このガイドでは、Discourseサイトから送信されるすべてのメールのアウターHTMLテンプレートをカスタマイズおよびスタイリングする方法を説明します。

:person_raising_hand: 必要なユーザーレベル:管理者

サイトから送信されるすべてのメールは、カスタマイズ可能なHTMLテンプレートでラップされています。

このガイドで説明する内容:

  • メールスタイルのカスタマイズセクションへのアクセス
  • HTMLテンプレートの変更
  • カスタムCSSの追加
  • メールテンプレートのテスト
  • 変更の元に戻す
  • カスタムテンプレートの例
  • ダイジェストメールとの連携
  • メールフォントの変更

メールスタイルのカスタマイズへのアクセス

  1. 管理者サイドバーのEmailセクションにあるAppearanceページに移動するか、/admin/customize/email_styleに直接アクセスします。
  2. メールテンプレートとスタイルを変更できるHTMLCSSの2つのタブがあるエディタが表示されます。

HTMLテンプレートの変更

HTMLタブのデフォルトのマークアップには、いくつかのプレースホルダーが含まれています。

  • %{email_content}必須。 各メールのコンテンツが挿入される場所です。このプレースホルダーを削除してはなりません。
  • %{email_preview} — スニペットを表示するメールクライアント用に、非表示のプレビューテキストを挿入します。
  • %{html_lang} — サイトの言語コードを<html>タグに挿入します。
  • %{dark_mode_meta_tags} — ダークモードサポート用のメタタグを挿入します。
  • %{dark_mode_styles} — ダークモードのレンダリング用のCSSスタイルを挿入します。

カスタムテンプレートを作成する際は、完全な互換性を確保するために、これらすべてのプレースホルダーを含める必要があります。開始点として、エディタを初めて開いたときに表示されるデフォルトのテンプレートを参照できます。

%{email_content}プレースホルダーを置き換えるコンテンツのカスタマイズについては、特定のメールテンプレートのカスタマイズ方法を参照してください。

カスタムCSSの追加

メールスタイルのエディタの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. リセットしたいタブ(HTMLまたはCSS)を選択します。
  2. エディタの下にある「Reset to default」ボタンをクリックします。

これにより、その特定のセクション(HTMLまたはCSS)がデフォルトのDiscourseメールテンプレートにリセットされます。各タブは個別にリセットされます。

カスタムテンプレートの例

ここでは、メールの幅を最大600pxに制限し、上部にロゴを追加する基本的なメールテンプレートを示します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <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>

画像ソース(src)、代替テキスト(alt)、およびリンク先(href)属性をサイト固有の情報に置き換えることを忘れないでください。

異なる画面サイズでの表示例

iPad Pro (10.5インチ) (iOS 13.1):

Gmail (Chrome):

iPhone 11 Pro Max (iOS 13.1):

Outlook 2019 (Windows 10)

ダイジェストメールとの連携

カスタムテンプレートですべてのメールにロゴを追加した場合、ダイジェストメールには2つの選択肢があります。

  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 Font Stackを参照してください。

  2. フォントのCSSルールを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

Webセーフフォントを使用するのが最も安全なアプローチだと思います。WindowsおよびMacコンピューターで利用可能なフォントの良いリストは次のとおりです。CSS Font Stack: 。DiscourseのメールテンプレートにフォントのCSSルールを追加するだけで十分なはずです。 Web Font

外部サービスからメールにWebフォントを読み込もうとすることができますが、多くのメールクライアントはWebフォントをサポートしていないことに注意する必要があります。それに関する詳細は次のとおりです。https://www.litmus.com/blog/the-ultimate-guide-to-web-fonts/。

「いいね!」 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