Easy Email
Drupal向けのシンプルなHTMLメールシステムで、メールテンプレート、Token置換、添付ファイル、メールログ、システムメールのオーバーライド機能を提供します。
easy_email
インストール
composer require 'drupal/easy_email:^3.0'
概要
Easy Emailは、堅牢な機能を提供しながら、できるだけシンプルに設定できるように設計されたHTMLメールシステムです。DrupalのメールMIME処理に関する詳細な知識や大幅な設定が必要な他のHTMLメールモジュールとは異なり、Easy Emailは適切なデフォルト設定ですべてを即座に処理します。
このモジュールは、Tokenを使用した設定可能なメールテンプレート、To/CC/BCC宛先のサポート、カスタマイズ可能な送信者情報、HTMLおよびプレーンテキスト本文オプション、Tokenまたはファイルパスを使用した動的な添付ファイル、ユーザーアカウントとの紐付けを含む包括的なメールログなど、完全なメール管理ソリューションを提供します。Entityベースのアーキテクチャにより、開発者は標準的なライフサイクルフックを使用してメール処理を変更または拡張できます。
メールテンプレートはFieldを追加可能で、特定のユースケース向けにカスタムFieldを追加できます(例:Drupal Commerceの注文関連トークンにアクセスするためのEntity参照Fieldの追加)。このモジュールには、CoreおよびContribモジュールのメールをオーバーライドするサブモジュール(Easy Email Overrides)とDrupal Commerce統合用のサブモジュール(Easy Email Commerce)が含まれています。
Features
- 宛先、送信者、件名、本文、添付ファイルを含むすべてのメールフィールドでのToken置換
- 自動ユーザーアカウント紐付け機能を備えたTo、CC、BCC宛先のサポート
- テンプレートごとにカスタマイズ可能な送信者名、アドレス、返信先アドレス
- オプションの受信トレイプレビューテキスト付きHTML本文(本文内では非表示だがメールクライアントの受信トレイプレビューで表示)
- 手動入力またはHTMLからの自動生成が可能なオプションのプレーンテキスト本文
- セキュリティ検証付きのToken、相対パス、またはURIを使用した動的添付ファイル
- 完全なコンテンツプレビュー付きの送信済みメールをすべて含む包括的なメールログ
- 簡単な追跡のためのユーザーアカウントへのログメール自動紐付け
- 標準的なDrupalライフサイクルフック(hook_entity_presave、hook_entity_updateなど)をサポートするEntityベースのアーキテクチャ
- ユースケースごとにカスタムFieldを追加できるFieldable対応メールテンプレート
- 重複メールを防止するユニークキーパターン
- 設定可能な保持期間に基づく自動メール削除
- 送信前にテンプレートをプレビューするメールプレビュー機能
- リビジョンの復元および削除機能を備えたメールEntityのリビジョンサポート
- パスホワイトリスト、拡張子/MIMEタイプブロック、サイズ制限を含む添付ファイルセキュリティ制御
- HTMLメール配信のためのDrupal Symfony MailerまたはSymfony Mailer Liteとの統合
- 手動メール削除用のDrushコマンド
- CoreおよびContribモジュールのメールをEasy Emailテンプレートに置き換えるオーバーライドシステム
- 注文関連メールテンプレート用のDrupal Commerce統合
Use Cases
トランザクションメール通知
注文確認、パスワードリセット、アカウント更新などの一般的なトランザクション通知用のメールテンプレートを作成します。Tokenを通じて関連するEntityデータにアクセスするためにテンプレートにEntity参照Fieldを追加します。完全なメール監査証跡を維持するために自動保存を設定します。
Drupal Coreユーザーメールの置き換え
Easy Email Overridesサブモジュールを有効にして、CoreのユーザーモジュールメールをカスタムHTMLテンプレートに置き換えます。Drupalのセキュリティ機能を維持しながら、パスワードリセットメール、ウェルカムメール、アカウント有効化通知、その他のユーザー関連通信をオーバーライドします。
Commerce注文領収書
Easy Email Commerceサブモジュールを有効にして、ブランド化されたHTML注文領収書メールを作成します。Commerce固有のTokenを通じて注文データ、明細行、顧客情報、価格にアクセスします。ストアごとまたは注文タイプごとにメールテンプレートを設定します。
マーケティングキャンペーンメール
キャンペーン追跡用のカスタムFieldを含むマーケティングコミュニケーション用テンプレートを作成します。ユニークキーパターン機能を使用して重複送信を防止します。メールログを活用して配信を追跡し、受信者ユーザーアカウントにメールを紐付けます。
システム通知メール
管理者通知、コンテンツモデレーションアラート、システムステータスメール用のテンプレートを構築します。動的コンテンツにToken置換を使用し、データベース増大を管理するために自動削除を設定します。
複数受信者へのパーソナライズメール
受信者ごとに評価される安全でないTokenを使用して、複数の受信者にパーソナライズされたメールを送信します。モジュールはユーザーごとのパーソナライズが必要な場合にメールを自動的に分割しながら、ログ用の単一のメールレコードを維持します。
Tips
- ユニークキーパターンを使用して重複メールの送信を防止 - EntityのIDとタイムスタンプを組み合わせて確実な重複排除を実現
- Token経由で関連データにアクセスするためにテンプレートにカスタムEntity参照Fieldを追加(例:CommerceメールのOrder参照)
- テンプレートごとに選択的にメールログを有効化 - 大量のテンプレートでは永続保存が不要な場合がある
- 送信前にToken置換をテストするためにプレビュー機能を使用
- 添付ファイルセキュリティを慎重に設定 - デフォルトのブロック拡張子は一般的な攻撃ベクトルから保護
- Cronタイムアウトを避けるためにオフピーク時間帯にDrushコマンドを使用して一括削除
- テンプレートごとのスタイリング用にテーマテンプレートサジェストを作成(例:easy-email-body-html--[bundle].html.twig)
Technical Details
Admin Pages 12
/admin/structure/email-templates/templates
メールテンプレートを管理します。メールテンプレートの表示、作成、編集、削除、プレビューを行います。各テンプレートは、メールの種類ごとにデフォルトの宛先、送信者情報、件名、本文コンテンツ、添付ファイル、保存設定を定義します。
/admin/structure/email-templates/templates/add
新しいメールテンプレートを作成します。初期フォームではラベルとマシン名のみを入力します。保存後、完全なテンプレート設定フォームが表示されます。
/admin/structure/email-templates/templates/{easy_email_type}/edit
宛先、送信者、コンテンツ、添付ファイル、保存設定を含むメールテンプレートのすべての側面を設定します。
/admin/structure/email-templates/templates/{easy_email_type}
メールテンプレートがどのようにレンダリングされるかをプレビューします。ヘッダー、受信トレイプレビュー、HTML本文、プレーンテキスト本文をリサイズ可能なセクションを持つインタラクティブなプレビューインターフェースで表示します。
/admin/structure/email-templates/settings
自動削除、添付ファイルセキュリティ、レポート表示を含むグローバルEasy Email設定を構成します。
/admin/structure/email-templates/theme
Easy Emailテーマ統合を構成します。メールレンダリング用の専用テーマを有効にできます。
/admin/reports/email
ウェブサイトから送信されたすべての保存済みメールのログを表示します。メールID、ラベル、テンプレートタイプ、宛先、作成日、送信ステータスを一覧表示し、表示/編集/削除操作を提供します。
/admin/reports/email/{easy_email}
ステータス、送信時刻、ヘッダー、受信トレイプレビュー、HTML本文、プレーンテキスト本文、添付ファイルを含む送信済みまたは未送信メールの完全な詳細を表示します。
/admin/reports/email/add/{easy_email_type}
テンプレートを使用してメールを手動で作成および送信します。すべてのテンプレートフィールドをカスタマイズし、オプションでメールを送信または保存できます。
/admin/structure/email-templates/overrides
CoreおよびContribモジュールのメールをEasy Emailテンプレートに置き換えるメールオーバーライドを管理します。リストビューには編集/削除操作付きの設定済みオーバーライドが表示されます。
/admin/structure/email-templates/overrides/add
システムメールをEasy Emailテンプレートに置き換える新しいオーバーライドを作成します。
/admin/structure/email-templates/overrides/{easy_email_override}/edit
メールオーバーライドのパラメータマッピングとフィールドコピーを設定します。
権限 16
Hooks 1
hook_easy_email_type_delete
Easy Emailテンプレートタイプの削除に対応します。easy_email_overrideが関連するオーバーライドをクリーンアップするために使用します。
Drush Commands 1
drush easy_email:purge_emails
テンプレート設定または指定した条件に基づいてEasy Email Entityを削除
Troubleshooting 6
Drupal Symfony Mailer LiteまたはDrupal Symfony Mailerがインストールされ、設定されていることを確認してください。メールシステムが適切に設定されていることを確認してください。/admin/reports/emailでメールログを確認し、メールが作成されているが送信されていないかどうかを確認してください。
/admin/structure/email-templates/settingsでグローバル添付ファイル設定を確認してください。パスがallowed_attachment_pathsリストに含まれていることを確認してください。ファイル拡張子とMIMEタイプがブロックリストに含まれていないことを確認してください。指定されたパスにファイルが存在し、読み取り可能であることを確認してください。
テンプレート編集フォームのTokenブラウザを使用してTokenが正しいことを確認してください。メール作成時に関連するEntity参照Fieldが入力されていることを確認してください。Tokenモジュールがインストールされ、有効になっていることを確認してください。
Easy Email Overridesサブモジュールが有効になっていることを確認してください。/admin/structure/email-templates/overridesでオーバーライドが設定されていることを確認してください。パラメータマッピング設定を確認してください。個別のオーバーライドはモジュールレベルのオーバーライドより優先されます。
テンプレート設定で自動削除を設定してください(メールの保存 > 自動削除)。グローバル設定でCronベースの削除を有効にしてください。手動削除にはDrushコマンドを使用してください:drush easy_email:purge_emails
テンプレート設定で「HTML本文からプレーンテキスト本文を生成」を有効にしてください。HTML本文フィールドにコンテンツが含まれていることを確認してください。メーラーモジュールでhtml2text変換が適切に機能していることを確認してください。
Security Notes 7
- 添付ファイルパスはホワイトリストに対して検証される - allowed_attachment_pathsパターンに一致するファイルのみが添付可能
- 危険なファイル拡張子(exe、php、jsなど)はメールベースの攻撃を防ぐためにデフォルトでブロック
- MIMEタイプ検証は拡張子チェックを超える追加のセキュリティレイヤーを提供
- 最大添付ファイルサイズ制限はリソース枯渇攻撃を防止
- メールEntityアクセスは詳細な権限で制御 - マルチユーザーサイトでは慎重に設定
- ユニークキーパターンは重複送信を拒否することでメールフラッディングを防止
- レンダリング前にプレーンテキスト本文コンテンツにXSSフィルタリングを適用