Tích Hợp Dịch Vụ Gửi Email SendGrid Vào Ứng Dụng NestJS
Giới Thiệu
Chức năng gửi email là một trong những đặc điểm thiết yếu của hầu hết các ứng dụng web hiện nay. Trong bài viết này, chúng ta sẽ tìm hiểu cách tích hợp dịch vụ gửi email SendGrid vào ứng dụng NestJS của bạn một cách đơn giản và hiệu quả bằng gói @sologence/nest-js-email-sendgrid.
Tại Sao Nên Chọn Gói @sologence/nest-js-email-sendgrid?
Dưới đây là một số lý do chính khiến bạn nên sử dụng gói này cho ứng dụng của mình:
- Tích hợp dễ dàng: Gói này được thiết kế đặc biệt để tích hợp mượt mà với ứng dụng NestJS.
- Hỗ trợ email đa dạng: Bao gồm email dựa trên mẫu, HTML và văn bản thuần túy.
- Cấu hình an toàn: Cung cấp các tùy chọn cấu hình an toàn và không đồng bộ.
- Ghi nhật ký an toàn: Che giấu thông tin email trong nhật ký để bảo mật tốt hơn.
- Kiểu tham số an toàn: Đảm bảo rằng các tham số email đều được kiểm tra và bảo vệ.
Cách Cài Đặt Gói
Để bắt đầu, bạn hãy cài đặt gói @sologence/nest-js-email-sendgrid bằng câu lệnh sau:
npm install @sologence/nest-js-email-sendgrid
1. Cấu Hình Đơn Giản
Để cấu hình mô-đun SendGrid một cách đơn giản, bạn có thể thêm đoạn mã sau vào file AppModule của ứng dụng:
typescript
import { SendgridModule } from '@sologence/nest-js-email-sendgrid';
@Module({
imports: [
SendgridModule.register({
apiKey: 'YOUR_SENDGRID_API_KEY',
defaultFromEmail: 'your@email.com',
masking: true // Kích hoạt che giấu email trong nhật ký
}),
],
})
export class AppModule {}
2. Cấu Hình Không Đồng Bộ (Khuyến Nghị)
Cách cấu hình này sử dụng dịch vụ gửi email để gửi thư chào mừng một cách hiệu quả:
typescript
@Injectable()
export class WelcomeService {
constructor(private readonly sendgridService: SendgridService) {}
async sendWelcome(userEmail: string) {
await this.sendgridService.sendEmailFromTemplate({
to: userEmail,
templateId: 'your-template-id',
dynamicTemplateData: {
name: 'John',
activationLink: 'https://yourapp.com/activate'
}
});
}
}
Gửi Email Với Nội Dung Tùy Chỉnh
Gói này cũng hỗ trợ gửi email HTML tùy chỉnh:
typescript
await sendgridService.sendEmailCustomHtmlBody({
to: 'user@example.com',
subject: 'Chào mừng bạn đến với chúng tôi!',
html: '<h1>Chào mừng bạn đến với nền tảng của chúng tôi!</h1>'
});
Gửi Email Văn Bản Thuần Túy
Nếu bạn cần gửi thông báo đơn giản qua văn bản thuần túy, có thể sử dụng đoạn mã sau:
typescript
await sendgridService.sendEmailCustomText({
to: 'user@example.com',
subject: 'Thông báo đơn giản',
text: 'Tài khoản của bạn đã được cập nhật.'
});
Gửi Email Có Tệp Đính Kèm Từ S3
Bạn cũng có thể gửi email kèm theo tệp đính kèm từ S3:
typescript
await sendgridService.sendEmailWithS3Attachment({
to: 'user@example.com',
subject: 'Tài liệu của bạn',
text: 'Xin vui lòng xem tài liệu đính kèm.',
url: 'https://your-s3-bucket.amazonaws.com/document.pdf',
fileName: 'report.pdf'
});
Xử Lý Lỗi Khi Gửi Email
Gói này cung cấp cơ chế xử lý lỗi hiệu quả:
typescript
try {
await sendgridService.sendEmailFromTemplate(params);
} catch (error) {
if (error instanceof BadRequestException) {
// Xử lý các lỗi xác thực
}
// Xử lý các lỗi khác
}
Kết Luận
Gói @sologence/nest-js-email-sendgrid giúp bạn tích hợp dịch vụ SendGrid vào ứng dụng NestJS một cách nhanh chóng và an toàn. Với các tính năng mạnh mẽ như che giấu email, hỗ trợ gửi tệp đính kèm từ S3 và đảm bảo tham số an toàn kiểu, đây là giải pháp lý tưởng cho mọi nhu cầu gửi email. Hy vọng những thông tin này hữu ích cho bạn trong quá trình phát triển ứng dụng!
source: viblo