Nocobaseで作成したアプリからメール送信してみる

Nocobaseで作成したアプリからメール送信してみる

Clock Icon2024.10.28

Nocobaseのアプリでログインユーザーの作成後等、メールでお知らせを送信したい というケースを想定し、
メール送信を試してみます。

※ Nocobaseのバージョンはv1.2.29を使用しています。

方法

Nocobaseでメールを送信するためにはワークフローから行えます。
plugin-workflow-mailer が組み込まれており、ワークフローのステップに追加できます。

スクリーンショット 2024-10-28 10.26.23

送信するために必要な設定として、SMTPの認証が必要でした。

スクリーンショット 2024-10-28 10.25.41

メール送信の準備

ユーザーを作成したらその旨を登録アドレスにメールでお知らせする というケースでやってみます。

ダミーSMTPサーバーの用意(smtp4dev)

今回は開発用に簡単に用意できるダミーSMTPサーバーのsmtp4devを使用します。
※ 実際にメールが飛ぶわけではありません。

  • 特徴:

    • Windows、Linux、macOSで動作可能。
    • 簡単にセットアップでき、GUIで受信したメールを確認できる。
    • STARTTLSやImplicit TLSにも対応しており、自己証明書を自動生成する機能もあります。
  • 使用方法:

    • GitHubからダウンロードし、実行するだけでSMTPサーバーが立ち上がります。
      ブラウザで受信状況を確認できます(例: http://localhost:5000/)

Dockerコンテナも提供されています。
Nocobaseもdockerコンテナで動かしていて、Docker composeに設定を追加するだけなのでこの方法で起動させます。

スクリーンショット 2024-10-28 15.12.37

servicesに記載されているsmtp4dev以下の部分を、nocobaseのコンテナ起動に使用しているdocker-compose.ymlに追記します。

nocobaseのアプリから名前解決ができるようにdocker-compose.ymlに以下の設定を追加しました。

container_nameはホスト名として使います。
networksはnocobaseの設定と合わせます。

container_name: smtp4dev
networks:
  - nocobase

このとき、docker-composeのvolumesに指定しているフォルダがなければ作成します。

例)

mkdir ./smtp4dev-data

最後にコマンドを実行して起動します。

docker-compose up -d

smtp4devの設定

スクリーンショット 2024-10-28 15.15.30

smtp4devが起動すると、http://<<hostname>>:5000 でブラウザから接続します。

Nocobaseのworkflow-mailerプラグインは認証を伴ってSMTP接続をするようになっています。
smtp4devのデフォルトでは認証は無しになっているので、できるように設定してみます。

スクリーンショット 2024-10-28 15.19.23

左上にある歯車マークをクリックするとSettingsが開くので、まずはUsersタブからユーザーを作成します。

スクリーンショット 2024-10-28 15.27.24

次にGeneralタブのRequire Authentication (SMTP, IMAP)トグルをONにします。

ワークフロー作成(Nocobaseアプリ)

ワークフローの管理画面から新規作成します。

スクリーンショット 2024-10-28 10.39.53

トリガータイプはコレクションイベントにします。
登録後、即座にメールを送りたいので同期モードで作成しました。

スクリーンショット 2024-10-28 10.42.39

その後作成したワークフローの設定画面を開き、トリガーを設定します。

スクリーンショット 2024-10-28 10.43.28

コレクションは使用しているデータソースにある ユーザー にします。

トリガータイミングは、データが追加された後 にします。

条件には、メールアドレスが空ではない にします(Nocobaseのユーザー登録にメールアドレスは必須項目ではなかったため)

メールのステップを追加(Nocobaseアプリ)

スクリーンショット 2024-10-28 10.48.34

設定画面の➕ボタンから__Mailer__をクリックし、追加します。

スクリーンショット 2024-10-28 15.32.11

smtp4devの設定に合わせてプラグインの設定していきます。

今回の設定例)

  • SMTP host
    • smtp4devのホスト名を入力します
  • Port
    • SMTPのポートを入力します (デフォルトは465). smtp4devのデフォルトである25にします
  • Secure
    • checkを外します(デフォルトでON)
  • User/Password
    • mtp4devで作成したユーザー名とパスワードを入力します
  • From
    • 送信元のメールアドレスを入力します
  • To
    • トリガーで取得されたメールを選択します
      スクリーンショット 2024-10-28 10.54.42

ワークフローを有効にする(Nocobaseアプリ)

スクリーンショット 2024-10-28 10.56.28
設定終了後、画面左上にあるトリガーを有効にするとワークフローが動くようになります

送信確認

実際にユーザーを追加してメール送信されるか確認してみます

スクリーンショット 2024-10-28 15.36.52

アプリからこのようなユーザーを追加します。

スクリーンショット 2024-10-28 15.38.43

ワークフローの実行履歴を確認してみます。
送信ができているならResolved と表示されています。

スクリーンショット 2024-10-28 15.40.05

ノードの結果にSMTPの送信結果情報が記載されています。
"response": "250 Mail accepted" となっているので成功してそうです。

スクリーンショット 2024-10-28 15.41.52

smtp4devのUIを確認すると、送信されたメールも確認できました。
大丈夫そうですね。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.