HTMLメールをイチから作成するのは大変です。Webページのものとは若干仕組みが異なったり、受け取る環境によって表示誤差があります。
そうした問題を解決するためには、フレームワークを使うのが手軽です。今回はReactを使ってHTMLメールを作成できるReact Emailを紹介します。
React Emailのインストール
React EmailはNode.jsの環境が必須です。Node.jsがインストールされた状態で以下のコマンドを実行します。
npx create-email@latest
実行すると react-email-starter
というフォルダができあがるので、そこに入ります。そして npm install
で必要なライブラリをインストールします。
cd react-email-starter npm install
後は npm run dev
でWebサーバーが立ち上がります。初回は時間がかかるので注意してください。
npm run dev
Webサーバーは [http://localhost:3000](http://localhost:3000)
でアクセスできます。
React Emailの使い方
下記は [http://localhost:3000](http://localhost:3000)
にアクセスした画面です。左側にメールテンプレート、右側にレンダリング結果が表示されます。
右側のテンプレートはあらかじめ用意されているもので、NotionやStripeなどのテンプレートを模しています。
新しいテンプレートを作成する際には emails
フォルダにある既存のテンプレートをコピーして名前を変更するのが良さそうです。 emails
以下にあるファイルは自動的に認識され、左側のリストに追加されます。
編集機能はないので、編集は利用しているエディタを使ってください。編集内容は即座に反映されるので、React Emailをプレビュー代わりにすると良いでしょう。
できあがった内容はReactとして確認できるほか、HTMLでも取得・ダウンロードできます。HTMLを除去したテキスト版もあるので、HTMLメール非対応の環境でも利用できるでしょう。
React Emailで用意されているコンポーネント
React Emailでは以下のコンポーネントが用意されています。基本的にHTMLタグを直接書くのではなく、これらのコンポーネントを組み合わせてHTMLメールを作成します。
- HTML
- Head
- Button
- Column
- Container
- Font
- Heading
- Hr
- Image
- Link
- Preview
- Section
- Tailwind
- Text
デザイン面については各コンポーネントのpropsであったり、Tailwindを使って行う形になります。複数列に分ける場合にはColumnコンポーネントが利用できます。
HTMLメールの生成
Reactを使ったシステムの中でHTMLメールを送信する場合には、テンプレートからHTMLへの変換を行います。
const html = render(<MyTemplate />, { pretty: true, });
Reactを使っていないシステムであれば、React Emailの画面からHTMLをダウンロードして編集すれば良いでしょう。
まとめ
React EmailはReactを使うことで再利用しやすいコンポーネントを組み合わせたHTMLメールを作成できます。Reactを使っているシステム内に組み込んでも良いですし、それ以外のアーキテクチャを使ったサービスでも便利に使えるでしょう。