👌
【NestJS】メール送信をしたい
こんにちは投資ロウトです。
背景
自社のシステムでメールを送信したいという要件があると思います。
事前準備
gmailで安全性の低いアプリからメールを送信するという設定を行う必要があります。
具体的にはこの部分を実施する必要があります。
NestJSで実装
@Module({
imports: [
AwsSecretsModule,
MailerModule.forRootAsync({
imports: [ConfigModule, AwsSecretsModule], // ConfigModuleや他の必要なモジュールをインポート
inject: [AwsSecretsService, ConfigService],
useFactory: async (
awsSecretsService: AwsSecretsService,
configService: ConfigService,
) => {
// ここでawsSecretsServiceからメールアドレスのパスワードを取得する
return {
transport: {
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: 'メールアドレスを入れる',
pass: '取得したパスワードを入れる',
},
},
defaults: {
from: `"XXX" <XXX@ドメイン>`,
},
};
},
}),
],
providers: [MailService],
exports: [MailService],
})
export class MailModule {}
サービスクラスはこんな感じ
@Injectable()
export class MailService {
constructor(private readonly mailerService: MailerService) {}
async sendWelcomeEmail(
to: string,
text: string,
subject: string,
): Promise<void> {
await this.mailerService.sendMail({
to, // 送信先アドレスを動的に
subject, // 件名も動的に(テスト用の固定文ではなく)
text, // 本文
});
}
}
まとめ
こんな感じで無事にメールが送ることができました。
Discussion