Mailer Plus (DSM+)
Drupal向けのSymfony Mailerライブラリの拡張統合モジュール。HTMLメール、ファイル添付、埋め込み画像、サードパーティ配信サービス、ロードバランシング/フェイルオーバー、署名/暗号化、非同期送信など高度なメール機能を提供します。
symfony_mailer
インストール
composer require 'drupal/symfony_mailer:^1.6'
概要
Mailer Plus(旧称Symfony Mailer)は、DrupalにおけるSymfony Mailerライブラリの強化統合モジュールです。従来のDrupalメールシステムを完全に置き換え、モダンで機能豊富なメール送信基盤を提供します。
本モジュールは4つのサブモジュールで構成されています:
- Mailer Plus(メインモジュール):コアとなるメール送信サービスを提供し、テスト用の検証メール機能を含みます
- Mailer Policy:メールタイプごとにカスタマイズ可能なポリシー設定(件名、本文、アドレス、テーマ等)を管理します
- Mailer Transport:SMTP、Sendmail、DSNなど複数のトランスポート方式をGUIで設定できます
- Mailer Override:既存モジュール(User、Contact、Commerce等)のレガシーメールをMailer Plusに移行するためのオーバーライド機能を提供します
主な技術的特徴として、CSSインライン化、HTML→プレーンテキスト自動変換、トークン置換、テーマ切り替え、複数トランスポートの切り替えなどがあります。
Features
- Symfony Mailerライブラリを活用したモダンなメール送信基盤
- HTMLメール、ファイル添付、埋め込み画像の完全サポート
- メールポリシー機能による件名、本文、宛先、テーマなどのカスタマイズ
- SMTP、Sendmail、DSN、Nullなど複数トランスポートのGUI設定
- CSSインライン化(tijsverkoyen/css-to-inline-styles使用)
- HTML→プレーンテキスト自動変換(html2text/html2text使用)
- トークン置換と変数置換のサポート
- メールタイプ別のテーマ切り替え機能
- 既存モジュールのレガシーメールからの移行支援(Override機能)
- Drupal User、Contact、Commerce、Simplenewsモジュールとの統合
- Drushコマンドによるオーバーライド管理
- メールフェーズごとのフック(init、build、post_render、post_send)
Use Cases
SMTPサーバーを使用したメール送信設定
1. /admin/config/system/mailer/transport にアクセス 2. 「Add transport」をクリックし「SMTP」を選択 3. SMTPサーバーの認証情報(ホスト、ポート、ユーザー名、パスワード)を入力 4. TLS設定を確認し保存 5. 作成したトランスポートを「Set as default」でデフォルトに設定 6. /admin/config/system/mailer から検証メールを送信してテスト
ユーザー登録メールのカスタマイズ
1. Mailer Overrideサブモジュールを有効化 2. /admin/config/system/mailer/override で「Import」を実行し既存設定を取り込み 3. /admin/config/system/mailer/policy でuser.register_no_approval_requiredポリシーを編集 4. Subject(件名)、Body(本文)アジャスターを設定 5. HTML形式でリッチなメールテンプレートを作成 6. {{ user }}変数や[user:name]トークンを使用してパーソナライズ
コンタクトフォームごとに異なるメールテンプレート設定
1. /admin/config/system/mailer/policy/add にアクセス 2. Tag 1で「contact」、Tag 2で「page」、Tag 3で「mail」を選択 3. Entityで対象のコンタクトフォームを選択 4. 「Add and configure」をクリック 5. Body、Subjectアジャスターを設定 6. 必要に応じてThemeアジャスターでフォーム専用テーマを指定
特定メールタイプの送信を無効化
1. 対象のメールタイプのポリシーを作成または編集 2. 「Skip sending」アジャスターを追加 3. スキップ理由のメッセージを入力(管理者に表示される) 4. 保存すると、該当メールは送信されず管理者にメッセージが表示される
メールテーマのカスタマイズ
1. カスタムテーマでemail.html.twigとemail-wrap.html.twigをオーバーライド 2. テーマにメール用CSSライブラリを定義(*.libraries.yml) 3. /admin/config/system/mailer/policy で対象ポリシーを編集 4. Themeアジャスターで作成したカスタムテーマを選択 5. メール本文でaddLibrary()を使用してCSSを適用
外部メールサービス(SendGrid、Mailgun等)との連携
1. 外部サービス用のSymfony Mailerトランスポートパッケージをインストール(例:symfony/sendgrid-mailer) 2. /admin/config/system/mailer/transport で「DSN」タイプのトランスポートを追加 3. DSN欄にサービス固有のDSN文字列を入力(例:sendgrid://API_KEY@default) 4. 保存してデフォルトに設定 5. 検証メールでテスト
Tips
- 検証メール機能を活用して設定変更後は必ずテスト送信を行う
- ポリシーは継承されるため、共通設定はルートポリシー(ID: _)に設定すると効率的
- 開発環境ではNullトランスポートを使用して実際のメール送信を抑制できる
- メールテンプレートのデバッグには$email->getHtmlBody()の内容をログ出力すると便利
- Drushコマンドを使用すると大量のオーバーライド設定を一括で管理できる
- CSSはインライン化されるため、メールクライアント互換性のためシンプルなスタイルを推奨
Technical Details
Admin Pages 7
/admin/config/system/mailer
メーラー設定の確認とテストメール送信を行う画面。テストメールを指定アドレスまたは自分自身に送信して、メール配信が正しく機能するか検証できます。
/admin/config/system/mailer/policy
メールタイプごとのポリシー設定を管理する画面。メールの件名、本文、送信元、宛先、テーマ、トランスポートなどを細かく設定できます。
/admin/config/system/mailer/policy/add
新しいメーラーポリシーを作成する画面。メールタグとエンティティを選択してポリシーを定義します。
/admin/config/system/mailer/policy/{mailer_policy}
メーラーポリシーの詳細設定を行う画面。各種アジャスター(調整項目)を追加・設定してメールをカスタマイズします。
/admin/config/system/mailer/transport
メール配信方法(トランスポート)を管理する画面。SMTP、Sendmail、DSNなど複数のトランスポートを設定・切り替えできます。
/admin/config/system/mailer/transport/add/{plugin_id}
新しいトランスポートを作成する画面。トランスポートタイプに応じた設定フォームが表示されます。
/admin/config/system/mailer/override
既存モジュールのメール設定からMailer Plusへの移行状況を管理する画面。インポート、有効化、無効化の操作ができます。
権限 1
Hooks 6
hook_mailer_PHASE
メール処理の各フェーズ(init、build、post_render、post_send)で実行されるフック。メール内容をカスタマイズできます。
hook_mailer_TYPE_PHASE
特定のメールタイプに対するフェーズフック。TYPEはメールタグの最初の部分(例:user、contact)。
hook_mailer_TYPE__SUBTYPE_PHASE
特定のメールタイプとサブタイプに対するフェーズフック。
hook_symfony_mailer_info_alter
メーラープラグイン定義を変更するフック。
hook_mailer_adjuster_info_alter
EmailAdjusterプラグイン定義を変更するフック。
hook_mailer_transport_info_alter
トランスポートプラグイン定義を変更するフック。
Drush Commands 2
drush mailer:override
オーバーライドアクションを実行します。既存メール設定のインポート、有効化、無効化を行います。
drush mailer:override-info
メーラーオーバーライドの情報を表示します。各オーバーライドの状態とインポート可能な設定を確認できます。
Troubleshooting 6
1. /admin/config/system/mailer から検証メールを送信してエラーを確認 2. トランスポート設定(SMTP認証情報、ポート等)を確認 3. サーバーのファイアウォールでSMTPポートが開いているか確認 4. Drupalログ(/admin/reports/dblog)でエラーメッセージを確認
1. ポリシー設定で「Wrap and convert」アジャスターの「Plain text」がオフになっているか確認 2. 「Inline CSS」アジャスターが有効になっているか確認 3. メール本文のテキストフォーマットがHTMLを許可しているか確認
1. 「Inline CSS」アジャスターがポリシーで有効になっているか確認 2. ライブラリが正しく読み込まれているか確認(addLibrary()の呼び出し) 3. CSSファイルのパスが正しいか確認
1. Tokenモジュールがインストール・有効化されているか確認 2. 使用しているトークンタイプがメーラー定義のtoken_typesに含まれているか確認 3. トークン形式が正しいか確認([token:name]形式)
1. Mailer Overrideサブモジュールが有効になっているか確認 2. /admin/config/system/mailer/override でオーバーライドが「Enable」状態か確認 3. 必要に応じて「Import」を再実行して設定を更新
1. Attachment::fromPath()またはAttachment::fromContent()の使用方法を確認 2. ファイルパスが正しく、アクセス可能か確認 3. AttachmentAccessEmailProcessorが有効か確認
Security Notes 4
- 「administer mailer」権限は強力な権限のため、信頼できる管理者のみに付与してください
- SMTPパスワードは設定に保存されるため、設定エクスポート時は機密情報に注意してください
- メールテンプレートでユーザー入力を表示する場合はXSS対策として適切にエスケープしてください
- Sendmailトランスポート使用時、settings.phpのmailer_sendmail_commandsで許可するコマンドを制限できます