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

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

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

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

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

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

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

  1. Discourseサイトで、管理者 / メール / 外観 に移動します。
  2. メールテンプレートのHTMLとCSSを変更できるエディタが表示されます。

HTMLテンプレートの変更

エディタ内のデフォルトのマークアップには、bodyセクションに%{email_content}プレースホルダーが含まれています。このプレースホルダーは、各メールの内容が挿入される場所です。このプレースホルダーを削除しない限り、テンプレートに対して任意の変更を加えることができます。

%{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. テンプレートエディタの一番下までスクロールします。
  2. 「デフォルトに戻す」ボタンをクリックします。

この操作により、変更はデフォルトのDiscourseメールテンプレートに置き換えられます。

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

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

<!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>

画像、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. 互換性を最大限に高めるために、ウェブセーフフォントを使用します。利用可能なフォントのリストについては、CSS Font Stackを参照してください(WindowsおよびMac用)。

  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