
NocoBase のワークフローから HTML メールを送信してみた
はじめに
NocoBase のワークフローから HTML メールを送信する2つの方法を紹介します。1つは商用プラグイン「Email Manager」の内部 API を呼び出して Gmail から送信する方法、もう1つは標準のメール送信ノードから SMTP サーバーを使って送信する方法です。
今回の検証では、個人のアドレスではなく、Google Workspace で作成した Google グループのアドレス(group@example.com)を送信元にすることを前提としています。個人のアドレスから送信する場合でも、同様の手順で送信できます。
SMTP サーバーには、今回は Amazon SES を使いました。SMTP 接続に対応したサーバーであれば利用できるため、Gmail の SMTP サーバーなども利用可能です。
それでは、順番に見ていきましょう。
Email Manager の内部 API を呼び出して Gmail から送信する
構成と役割分担
Email Manager は、NocoBase 上で Gmail や Outlook のメールを送受信できるようにする商用プラグインです[1]。管理画面からメールを作成・送信する際、Email Manager は内部で mail:messageSend という API を呼び出しています。今回はこの内部 API をワークフローの HTTP リクエストノードから直接呼び出します。
それぞれの役割分担は次のとおりです。
- HTTP リクエストノード: 宛先・件名・HTML 本文を指定して、内部 API
mail:messageSendを呼び出す - Email Manager プラグイン: OAuth で接続済みの Gmail アカウントの認証情報を使い、Gmail API 経由でメールを送信する
- Gmail: 送信元(Send As)に設定された Google グループのアドレスとして宛先へ配信する
事前準備
HTTP リクエストノードを設定する前に、Google Cloud と NocoBase 側で必要な設定を済ませておきます。
1. Google Cloud で OAuth クライアントを作成する
公式ドキュメントの手順に沿って OAuth クライアントを作成します[2]。今回の検証環境では、公式ドキュメントとは異なる次の2点の設定でも問題なく動作しました。
- OAuth 同意画面: 今回は社内利用のため「内部(Internal)」を選択しました。社内利用などの用途であれば、ドキュメントに記載されている外部公開の手順は不要です。
- データアクセス(スコープ): Gmail のスコープを個別登録しなくても接続できました。NocoBase が OAuth 認証フローの中で必要なスコープを要求しているためだと考えられます。
2. Google グループのアドレスを Send As に登録する
送信元を個人アドレスではなく Google グループのアドレスにするため、送信に利用する個人アカウント(以降「A さん」)の Gmail 設定で、グループのアドレスを「他のメールアドレス」(Send As)として登録します[3]。個人のアドレスから送信する場合は、この手順は不要です。
Google グループ自体は OAuth 認証に対応していません。そのため、個人アカウントで認証し、そのアカウントの送信元エイリアスとしてグループのアドレスを使います。
3. Gmail アカウントを Email Manager に接続する
A さんの NocoBase アカウントで Email Manager を開き、A さんの Gmail アカウントを OAuth で接続します。続けて Email Manager 側でエイリアスを手動同期し、group@example.com を送信元として選べる状態にします。
4. NocoBase の API キーを発行する
A さんの NocoBase アカウントで API キーを発行します。このキーは、ワークフローの HTTP リクエストノードの Authorization ヘッダーで使用します。
API キーはノードの設定に直接書き込まず、NocoBase の「シークレット」に登録して参照することをおすすめします。
HTTP リクエストノードの設定
事前準備が完了したら、ワークフローに HTTP リクエストノードを追加します。ノードは次のように設定しました。

- URL の
127.0.0.1:80は、NocoBase 自身のエンドポイントを直接呼び出すためのアドレスです。 AuthorizationヘッダーにはBearer <A さんの NocoBase API キー>を指定します。
リクエストボディには、送信内容を JSON で指定します。各パラメータの役割は次のとおりです。
| 項目 | 内容 |
|---|---|
accountEmail |
Email Manager に OAuth で接続した A さんの Gmail アドレス |
identityEmail |
Send As に登録した送信元アドレス |
from |
受信者に表示する送信元アドレス |
to |
宛先の配列 |
subject |
件名 |
body |
HTML 形式の本文 |
isDraft |
false で即時送信(true の場合は下書き保存) |
body には HTML 文字列をそのまま記述できます。氏名や日付などの動的な値には、前段のノードが出力した変数を埋め込めます。
注意点とハマったポイント
運用するうえでは、次の点に注意が必要です。
- 初回同期時のクォータ制限: Gmail アカウントを接続した直後は既存メールの同期処理が走るため、Gmail API のユーザー単位の使用制限(クォータ)に達しやすくなります[4]。メールの件数が多いアカウントでは特に注意してください。
- 個人アカウントへの依存: 送信処理が A さん個人の Google アカウントと OAuth 接続に依存します。退職や権限変更でアカウントが無効になると、ワークフローからの送信も停止します。
SMTP サーバーを使って送信する
構成と役割分担
NocoBase 標準のメール送信ノードから SMTP サーバーへ接続して送信します。今回は Amazon SES の SMTP エンドポイントを利用しましたが、メール送信ノードに設定する SMTP サーバーを変更すれば、Gmail の SMTP サーバーなども利用可能です。
それぞれの役割分担は次のとおりです。
- メール送信ノード: 宛先・件名・HTML 本文を指定して、SES へ SMTP で接続して送信する
- Amazon SES: 事前検証済みの ID(
group@example.com)を送信元としてメールを配信する - Google グループ: 送信元と返信先(Reply-To)のアドレスとして使う
宛先からの返信は Google グループで受信する想定です。なお、宛先からの返信がグループに正常に届くかの動作検証は、今回は実施していません。
事前準備: SES の設定と SMTP 認証情報の発行
Amazon SES 側で、次の準備をします。
- SES コンソールで
group@example.comを Email Identity として登録し、所有権を検証する - SES アカウントがサンドボックス環境の場合は、本番アクセスを申請する
- SES コンソールから SMTP 認証情報を発行する
SMTP 認証情報を発行すると、SMTP 専用の IAM ユーザーが自動で作成されます。SMTP パスワードは、IAM のシークレットアクセスキーとは別の値です[5]。
送信元 IP アドレスで SMTP ユーザーを制限する(推奨設計)
万が一 SMTP 認証情報が漏えいした場合に備えて、送信元 IP アドレスを制限しておくと安心です。ECS Fargate からの通信を NAT Gateway 経由にして Elastic IP で送信元を固定し、SMTP ユーザーの IAM ポリシーでその IP アドレスからの送信だけを許可します。
SES は IAM の条件キー aws:SourceIp に対応しています。また、SMTP での送信には ses:SendRawEmail 権限が使われます[6]。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenySendFromOutsideNatIp",
"Effect": "Deny",
"Action": ["ses:SendEmail", "ses:SendRawEmail"],
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": "Elastic_IP"
}
}
}
]
}
メール送信ノードの設定
ワークフローにメール送信ノードを追加し、SES の接続情報を設定します。メール送信ノードはコミュニティ版(オープンソース版)でも利用でき、テキスト形式と HTML 形式の両方に対応しています[7]。
SMTP ホスト: email-smtp.<リージョン>.amazonaws.com
ポート: 587(STARTTLS)または 465(TLS Wrapper)
ユーザー名: <SES の SMTP ユーザー名>
パスワード: <SES の SMTP パスワード>
From: group@example.com
- SES の SMTP エンドポイントへの接続には TLS が必須です。STARTTLS ならポート 25 / 587 / 2587、TLS Wrapper ならポート 465 / 2465 を使用します[8]。
- SMTP のユーザー名とパスワードは、API キーと同様に NocoBase のシークレットに保存して参照します。
- 送信先(To)には宛先のメールアドレスを指定し、本文形式には「HTML」を選択します。前段のノードが出力した変数を使えば、宛先や本文を動的に設定できます。
本番運用に向けた考慮点(SES の場合)
SES を本番環境で運用する場合は、次の準備や対策が必要です。
- 送信ドメイン認証(DNS 設定): 送信元ドメインの DNS に SES 用のレコード(Easy DKIM など)を追加し、SPF / DKIM / DMARC の認証をパスできるようにします。
- 送信元 IP の固定: ECS タスクをプライベートサブネットに配置し、NAT Gateway 経由で IP アドレスを固定したうえで、前述の IAM ポリシーによるアクセス制限を適用します。
- 配信結果の記録と監視:
- サプレッションリスト: アカウントレベルのサプレッションリストを有効化し、バウンスや苦情が発生した宛先への再送信を自動で停止します。
- イベントログの収集: SES のイベントを Amazon EventBridge 経由で CloudWatch Logs に転送し、1通ごとの配信結果を追えるようにします。
- メトリクス監視: CloudWatch メトリクスでバウンス率や苦情率を監視し、アカウントの評価低下を早期に検知します。
まとめ
今回は、NocoBase のワークフローから HTML メールを送信する方法として、Email Manager プラグインの内部 API を利用する方法と、SMTP サーバーを利用する方法の2つを紹介しました。
それぞれの特徴と選び方の目安は次のとおりです。
- Email Manager の内部 API: プラグインを導入済みであれば手軽に構築できます。一方で、非公開 API の利用に伴う運用上のリスクがあります。環境の更新頻度が低く、小規模な用途に適しています。
- SMTP サーバー: 標準のメール送信ノードだけで完結します。SMTP サーバーの設定を変更できるため、要件に応じて Gmail の SMTP サーバーなども利用可能です。
利用環境のセキュリティ要件や運用体制に合わせて、適した送信方法を選択してください。
本ブログが、NocoBase のワークフローから HTML メールを送りたい方の参考になれば幸いです。
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました
メール管理 - NocoBase Documentation(2026年9月28日参照) ↩︎
Google の設定 - NocoBase Documentation(2026年9月28日参照) ↩︎
Gmail でグループをメールアドレスとして追加する - Google グループ ヘルプ(2026年9月28日参照) ↩︎
使用制限 | Gmail | Google for Developers(2026年9月28日参照) ↩︎
Obtaining Amazon SES SMTP credentials - Amazon Simple Email Service(2026年10月1日参照) ↩︎
Identity and access management in Amazon SES - Amazon Simple Email Service(2026年9月30日参照) ↩︎
メール送信 - NocoBase Documentation(2026年9月28日参照) ↩︎
Connecting to an Amazon SES SMTP endpoint - Amazon Simple Email Service(2026年9月28日参照) ↩︎





