【NestJS】React(jsx)で作成したメールをmailer serviceで送信する
やりたいこと
- NestJSでメールを送信したい
- 検証としてGmailアカウントから送信したい
- メールテンプレートを作成する上で@nestjs-modules/mailerではテンプレートエンジンとしてhandlebars・pug・ejsが使えるようだが、扱いやすさを重視してjsx(React)で書きたい
1. ライブラリのインストール
2. Gmailパスワードの発行
Googleアカウントのセキュリティ設定から「2段階認証プロセス」を有効にし、「アプリパスワード」から16桁のパスワードを発行する。
3. メールサーバの設定
今回はGmailアカウントから送信したいので、上記のように環境変数としてメールサーバのオプションを設定する。
パスワードは先ほど取得した「アプリパスワード」のものを指定。
4. MailModuleの実装
- 環境変数から各オプションの値を取得し設定
adapter: new ReactAdapter()
とすることでテンプレートをjsxで記述できる
5. メールテンプレートの作成
6. MailServiceの実装
MailerService
をDIしsendMail()
でメールを送信template
にはそのメールで使用するテンプレートのパスを指定context
にはtsx側に渡したい値を指定
7. 動作確認
テンプレートファイルをビルドの対象にする。
実際にビルドしてみるとdist
下にtsxファイルが作成されている。
8. 動作確認
実装したMailService
をDIしメソッドを呼び出し、メールが送信されていればOK。
参考