mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-26 11:54:54 +00:00
Add Mailtrap API token and invitation template functionality
This commit is contained in:
@ -10,5 +10,8 @@ export default registerAs(
|
|||||||
SMTP_USER: process.env.SMTP_USER,
|
SMTP_USER: process.env.SMTP_USER,
|
||||||
SMTP_SENDER: process.env.SMTP_SENDER,
|
SMTP_SENDER: process.env.SMTP_SENDER,
|
||||||
SMTP_PASSWORD: process.env.SMTP_PASSWORD,
|
SMTP_PASSWORD: process.env.SMTP_PASSWORD,
|
||||||
|
MAILTRAP_API_TOKEN: process.env.MAILTRAP_API_TOKEN,
|
||||||
|
MAILTRAP_INVITATION_TEMPLATE_UUID:
|
||||||
|
process.env.MAILTRAP_INVITATION_TEMPLATE_UUID,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|||||||
1
libs/common/src/constants/mail-trap.ts
Normal file
1
libs/common/src/constants/mail-trap.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
export const SEND_EMAIL_API_URL = 'https://send.api.mailtrap.io/api/send';
|
||||||
@ -1,6 +1,8 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import * as nodemailer from 'nodemailer';
|
import * as nodemailer from 'nodemailer';
|
||||||
|
import axios from 'axios';
|
||||||
|
import { SEND_EMAIL_API_URL } from '../constants/mail-trap';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class EmailService {
|
export class EmailService {
|
||||||
@ -35,4 +37,42 @@ export class EmailService {
|
|||||||
|
|
||||||
await transporter.sendMail(mailOptions);
|
await transporter.sendMail(mailOptions);
|
||||||
}
|
}
|
||||||
|
async sendEmailWithInvitationTemplate(
|
||||||
|
email: string,
|
||||||
|
emailInvitationData: any,
|
||||||
|
): Promise<void> {
|
||||||
|
const API_TOKEN = this.configService.get<string>(
|
||||||
|
'email-config.MAILTRAP_API_TOKEN',
|
||||||
|
);
|
||||||
|
const TEMPLATE_UUID = this.configService.get<string>(
|
||||||
|
'email-config.MAILTRAP_INVITATION_TEMPLATE_UUID',
|
||||||
|
);
|
||||||
|
|
||||||
|
const emailData = {
|
||||||
|
from: {
|
||||||
|
email: this.configService.get<string>('email-config.SMTP_SENDER'),
|
||||||
|
},
|
||||||
|
to: [
|
||||||
|
{
|
||||||
|
email: email,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
template_uuid: TEMPLATE_UUID,
|
||||||
|
template_variables: emailInvitationData,
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
await axios.post(SEND_EMAIL_API_URL, emailData, {
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${API_TOKEN}`,
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
throw new HttpException(
|
||||||
|
error.message || 'Error sending email using Mailtrap template',
|
||||||
|
error.status || HttpStatus.INTERNAL_SERVER_ERROR,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user