NestJS でのメール配信のマスター:Nodemailer を使用したステップバイステップ ガイド
オクレ・U・エデット著
Nestjs を学習しているときに、Nodemailer でテストメールを送信できるようにしたいと考えていましたが、NestJS アプリケーションのコンテキストでこれを行うのは困難でした。インターネットで解決策を探し、よく調べた結果、解決策を見つけました。結果的にはとても簡単だったことが分かりました。
この記事では、NestJS プロジェクトで使用できるように、私のソリューションを共有します。
目次
- NestJS プロジェクトをセットアップする方法
- アプリで Nodemailer を構成する方法
- Nodemailer を使用してメールを送信する方法
- 結論
NestJS プロジェクトをセットアップする方法
理想的には、ユーザーがパスワードを忘れた場合のルートをクリックすると、ユーザーの電子メールにリンクが送信され、そのリンクを通じてユーザーがパスワードをリセットできるようにする必要があります。この記事では、Nodemailer を使用してこれがどのように機能するかを示すテスト ケース シナリオを示します。
お気に入りの IDE を開くか、ターミナルに移動して次のコマンドを貼り付けます。
$ npm i -g @nestjs/cli
$ nest new nodemailer-app
上記のコマンドは、nodemailer-app という新しいプロジェクトを生成します。 。
これを行った後、プロジェクト フォルダーに移動し、Nodemailer パッケージ npm i --save @nestjs-modules/mailer nodemailer をインストールします。 およびタイプ、npm i --save-dev @types/nodemailer .
アプリで Nodemailer を構成する方法
次に進む前に、mailtrap.io にアカウントがあることを確認してください。その場合は、ログインして [メール テスト] に移動してください。 。独自の受信トレイがない場合は作成します。受信トレイに移動すると、アプリケーションで Nodemailer を構成するために使用される資格情報が表示されるはずです。
プロジェクト ディレクトリで、アプリ モジュール ファイルに移動し、パッケージを構成します。
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AuthModule } from './auth/auth.module';
import { MailerModule } from '@nestjs-modules/mailer';
@Module({
imports: [
AuthModule,
MailerModule.forRoot({
transport: {
host: process.env.EMAIL_HOST,
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD,
},
},
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
上記のコードでは、MailerModule をインポートしました。 @nestjs-modules/mailerから 。次に、forRoot() を呼び出しました。 その上でのメソッド。 forRoot() 内 メソッドでは、ホスト プロパティと認証プロパティを含むトランスポート プロパティを指定しました。
mailtrap.io の受信トレイにある認証情報からホスト、ポート、ユーザー名、パスワードを忘れずに取得してください。
.env を作成できます。 すべての認証情報の詳細を格納するファイル。そうすることをお勧めします。適切な .env をロードできるようにするには NestJS にファイルがある場合は、これをインストールします。
$ npm i --save @nestjs/config
次に、app.module.ts で ファイル、ConfigModule をインポートします :
import { ConfigModule } from '@nestjs/config';
まだ app.module.ts 内にあります
// include the config module in your imports array
@Module({
imports: [
ConfigModule.forRoot({ envFilePath: '.env', isGlobal: true }),
],
controllers: [AppController],
providers: [AppService],
})
NodeMailer を使用して電子メールを送信する方法
Nodemailer を設定したら、それを使用して電子メールを送信します。
app.service.ts で ファイルに次のコードを貼り付けます。
import { MailerService } from '@nestjs-modules/mailer';
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
constructor(private readonly mailService: MailerService) {}
sendMail() {
const message = `Forgot your password? If you didn't forget your password, please ignore this email!`;
this.mailService.sendMail({
from: 'Kingsley Okure <kingsleyokgeorge@gmail.com>',
to: 'joanna@gmail.com',
subject: `How to Send Emails with Nodemailer`,
text: message,
});
}
}
app.service.ts 内 ファイル、MailerService が挿入され、クラスで電子メールの送信に使用されます。クラス内では、MailerService sendMail があります オブジェクトをパラメータとして受け取る関数です。オブジェクトには from が含まれています 、to 、subject と text プロパティ。
これを完了したら、app.controller.ts で ファイルに次のコードを貼り付けます。
import { Controller, Get, Res } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
sendMailer(@Res() response: any) {
const mail = this.appService.sendMail();
return response.status(200).json({
message: 'success',
mail,
});
}
}
コントローラーで行われるのは、Get を作成することだけです。 sendMail を呼び出すリクエスト サービスで作成した関数。
理想的には、現実世界のアプリケーションでは、これらすべてがパスワードを忘れた場合の機能で実行されます。また、ユーザーがパスワードを忘れたルートをクリックすると、電子メールが送信されます。
この小さな設定をテストするには、Postman を開いて localhost:3000 に移動し、送信をクリックします。
次に、mailtrap.io の受信トレイに移動してメッセージを確認します。
結論
この記事では、Nodemailer を使用して電子メールを送信する方法を学習しました。Nodemailer は、開発者が一度に複数の人に電子メールを送信できるように設計されたソフトウェアです。
また、NestJs アプリケーションのコンテキストでそれを構成およびセットアップする方法も学習しました。
私とつながりたい場合は、Twitter または Linkedin で私をフォローしてください
無料でコーディングを学びましょう。 freeCodeCamp のオープンソース カリキュラムは、40,000 人以上の人々が開発者としての職に就くのに役立ちました。始めましょう
-
あなたがあなたの聴衆を成長させるのを助ける6つの最高の電子メールニュースレターツール
ニュースレターを書くことは、オンラインオーディエンスを増やすために不可欠なツールです。かなり簡単なプロセスのように聞こえるかもしれませんが、ニュースレターが読者に届くようにするのは難しい場合があります。 幸いなことに、このステップを支援するテクノロジーが私たちの側にあります。これらのメールニュースレターツールを使用すると、ライターは簡単にニュースレターを視聴者に送信できます。 1.サブスタック サブスタックは、電子メール購読ニュースレターを送信したい著者とライターにとって頼りになる場所です。何を書きたいかに関係なく、Substackは、政治、テクノロジー、さらには金融など、さまざまなジャ
-
これらすべての利点のためにサードパーティのMacメールアプリを選択してください
Apple Mailにうんざりしているため、Mac用の新しいメールクライアントをお探しですか?多くのサードパーティクライアントは検討する価値があり、それぞれがMail.appに欠けているか欠けている機能が満載です。 見逃している機能と、それらを最もよく使用しているクライアントを見てみましょう。 あなたのメッセージは読まれましたか? したがって、緊急の電子メールを送信しましたが、受信者がそれを読んだかどうかはわかりません。このため、いつフォローアップする必要があるかわかりません。この状況では、電子メールの追跡が理想的です。複数の受信者に送信している場合でも、各受信者がいつメッセージを読んだか