記事
· 2026年1月21日 4m read

templated_emailを使ったInterSystems IRISでの動的テンプレートメール


メール送信は、統合シナリオでは一般的な要件です。クライアントへのリマインダー、自動レポート、トランザクション確認などに使用されます。 固定メッセージは、管理やパーソナライズが難しくなりがちです。 そこで登場するのが templated_email モジュールです。InterSystems IRIS InteroperabilityをJinja2テンプレートの機能を組み合わせます。

メール作成でJinja2を選ぶ理由

Jinja2はPythonエコシステムで人気のあるテンプレートエンジンで、完全に動的なコンテンツ生成を可能にします。 次をサポートします:

  • 変数 — 統合メッセージや外部ソースから動的にデータを取り込みます
  • 条件(if/else)— ランタイムデータに基づいてコンテンツを変更します
  • ループ(for)— テーブル、項目リスト、反復セクションを生成します
  • フィルターとマクロ — 日付や数字のフォーマット、テンプレートブロックを再利用します

簡単なメール本文テンプレートの例:

 


Hello {{ user.name }}!

{% if orders %}
You have {{ orders|length }} new orders:
{% for o in orders %}
 - Order #{{ o.id }}: {{ o.amount }} USD
{% endfor %}
{% else %}
You have no new orders today.
{% endif %}
 

このアプローチにより、メールコンテンツは動的かつ再利用可能になり、管理も簡単になります。

メールのスタイリングとレンダリングの考慮事項

異なるメールクライアント(Gmail、Outlook、Apple Mailなど)では、同じHTMLでも表示がわずかに異なる場合があります。 プラットフォーム間で一貫性のある見た目を実現するには、次が推奨されます。

  • 外部スタイルシートに依存する代わりにインラインCSSを使用する
  • 全体的な構造には、テーブルベースのレイアウトを使用する。flexboxやgridなどの最新CSS機能は、完全にサポートされない場合があります。
  • 多くのメールクライアントはスクリプトや複雑なCSSルールをブロックまたは無視するため、使用を避ける
  • 複数のクライアントとモバイルデバイスでメールをテストする

templated_emailモジュールの機能

templated_emailモジュールは、InterSystems IRISで動的かつプロ仕様のメールを手軽に作成・送信できるように設計されています。 主な機能には次が含まれます。

  • Jinja2テンプレートをレンダリングして動的なメールコンテンツを生成
  • 柔軟な使用方法 — Interoperability本番環境からも、ObjectScriptコードからも使用できます
  • 組み込みのBusiness Operation — SMTP統合による本番環境シナリオですぐに使用できます
  • 自動インラインスタイリング — CSSスタイルをインライン属性に変換し、メールクライアントとの互換性を改善します
  • Markdownのサポート — 送信前にHTMLにレンダリングされる、クリーンで管理しやすいテンプレートを作成できます

これらの機能により、動的で適切にフォーマットされたメールを簡単に作成でき、どのクライアントでも一貫して表示されます。

templated_emailモジュール

モジュールは以下の主なコンポーネントを提供します。

  • TemplatedEmail.BusinessOperation — SMTP経由でテンプレートメールを送信するBusiness Operation
  • TemplatedEmail.EmailRequest — テンプレート、データ、受信者のフィールドを含むメール送信をトリガーするInteroperabilityメッセージ
  • TemplatedEmail.MailMessage — %Net.MailMessageの拡張機能は次を追加します。
    • applyBodyTemplate() — Jinja2 + Markdownテンプレートを使用してメール本文をレンダリングして設定します
    • applySubjectTemplate() — Jinja2テンプレートを使用してメール件名をレンダリングして設定します

これにより、ObjectScriptで%Net.MailMessageをTemplatedEmail.MailMessageに置き換えて、動的テンプレート機能を利用できます。


set msg = ##class(TemplatedEmail.MailMessage).%New()
do msg.applySubjectTemplate(data,"New order from {{ customer.name }}")
do msg.applyBodyTemplate(data,,"order_template.tpl")

詳細と使用例は、Githubリポジトリで確認できます。

テンプレートはメールのためだけではありません

テンプレートのレンダリングメソッドはHTMLレポートの生成にも利用できるため、メール以外の用途でも同じテンプレートメソッドを簡単に再利用できます。

templated_emailは、Jinja2テンプレートの柔軟性を活用しながら、InterSystems IRIS向けに動的かつプロ仕様で保守性の高いメールを作成できます。

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください