Nocobaseで作成したアプリからメール送信してみる
Nocobaseのアプリでログインユーザーの作成後等、メールでお知らせを送信したい というケースを想定し、
メール送信を試してみます。
※ Nocobaseのバージョンはv1.2.29を使用しています。
方法
Nocobaseでメールを送信するためにはワークフローから行えます。
plugin-workflow-mailer が組み込まれており、ワークフローのステップに追加できます。
送信するために必要な設定として、SMTPの認証が必要でした。
メール送信の準備
ユーザーを作成したらその旨を登録アドレスにメールでお知らせする というケースでやってみます。
ダミーSMTPサーバーの用意(smtp4dev)
今回は開発用に簡単に用意できるダミーSMTPサーバーのsmtp4devを使用します。
※ 実際にメールが飛ぶわけではありません。
-
特徴:
- Windows、Linux、macOSで動作可能。
- 簡単にセットアップでき、GUIで受信したメールを確認できる。
- STARTTLSやImplicit TLSにも対応しており、自己証明書を自動生成する機能もあります。
-
使用方法:
- GitHubからダウンロードし、実行するだけでSMTPサーバーが立ち上がります。
ブラウザで受信状況を確認できます(例: http://localhost:5000/)
- GitHubからダウンロードし、実行するだけでSMTPサーバーが立ち上がります。
Dockerコンテナも提供されています。
Nocobaseもdockerコンテナで動かしていて、Docker composeに設定を追加するだけなのでこの方法で起動させます。
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の設定
smtp4devが起動すると、http://<<hostname>>:5000
でブラウザから接続します。
Nocobaseのworkflow-mailerプラグインは認証を伴ってSMTP接続をするようになっています。
smtp4devのデフォルトでは認証は無しになっているので、できるように設定してみます。
左上にある歯車マークをクリックするとSettingsが開くので、まずはUsersタブからユーザーを作成します。
次にGeneralタブのRequire Authentication (SMTP, IMAP)
トグルをONにします。
ワークフロー作成(Nocobaseアプリ)
ワークフローの管理画面から新規作成します。
トリガータイプはコレクションイベントにします。
登録後、即座にメールを送りたいので同期モードで作成しました。
その後作成したワークフローの設定画面を開き、トリガーを設定します。
コレクションは使用しているデータソースにある ユーザー にします。
トリガータイミングは、データが追加された後 にします。
条件には、メールアドレスが空ではない にします(Nocobaseのユーザー登録にメールアドレスは必須項目ではなかったため)
メールのステップを追加(Nocobaseアプリ)
設定画面の➕ボタンから__Mailer__をクリックし、追加します。
smtp4devの設定に合わせてプラグインの設定していきます。
今回の設定例)
- SMTP host
- smtp4devのホスト名を入力します
- Port
- SMTPのポートを入力します (デフォルトは465). smtp4devのデフォルトである25にします
- Secure
- checkを外します(デフォルトでON)
- User/Password
- mtp4devで作成したユーザー名とパスワードを入力します
- From
- 送信元のメールアドレスを入力します
- To
- トリガーで取得されたメールを選択します
- トリガーで取得されたメールを選択します
ワークフローを有効にする(Nocobaseアプリ)
設定終了後、画面左上にあるトリガーを有効にするとワークフローが動くようになります
送信確認
実際にユーザーを追加してメール送信されるか確認してみます
アプリからこのようなユーザーを追加します。
ワークフローの実行履歴を確認してみます。
送信ができているならResolved
と表示されています。
ノードの結果にSMTPの送信結果情報が記載されています。
"response": "250 Mail accepted"
となっているので成功してそうです。
smtp4devのUIを確認すると、送信されたメールも確認できました。
大丈夫そうですね。