From 4ee08190513e7a961a67e11e0145c55e4bd22585 Mon Sep 17 00:00:00 2001 From: Mayank Mishra Date: Fri, 14 Nov 2025 19:06:47 +0530 Subject: [PATCH] integrated sending mail from brevo --- src/common/email/brevoApi.ts | 6 +++--- src/modules/host/handlers/registration.ts | 2 +- .../host/services/sendOTPEmail.service.ts | 14 ++++++++++++-- .../minglaradmin/handlers/inviteTeammate.ts | 3 +++ .../services/inviteTeammatesEmail.service.ts | 16 +++++++++++++--- .../services/sendOTPEmail.service.ts | 14 ++++++++++++-- 6 files changed, 44 insertions(+), 11 deletions(-) diff --git a/src/common/email/brevoApi.ts b/src/common/email/brevoApi.ts index 2e84fe5..4b7ae6f 100644 --- a/src/common/email/brevoApi.ts +++ b/src/common/email/brevoApi.ts @@ -28,14 +28,14 @@ class BrevoService { async sendEmail(options: EmailOptions): Promise<{ messageId: string }> { const response = await this.instance.post('/smtp/email', { sender: { - name: 'Tanami Info', - email: 'info@tanamicapital.com', + name: 'Minglar', + email: 'minglar.admin@minglargroup.com', }, to: options.recipients, subject: options.subject, htmlContent: options.htmlContent, replyTo: { - email: 'info@tanamicapital.com', + email: 'minglar.admin@minglargroup.com', }, }); diff --git a/src/modules/host/handlers/registration.ts b/src/modules/host/handlers/registration.ts index 268e91e..5662ede 100644 --- a/src/modules/host/handlers/registration.ts +++ b/src/modules/host/handlers/registration.ts @@ -15,7 +15,7 @@ export const handler = safeHandler(async ( ): Promise => { // Parse request body let body: { email?: string }; - + try { body = event.body ? JSON.parse(event.body) : {}; } catch (error) { diff --git a/src/modules/host/services/sendOTPEmail.service.ts b/src/modules/host/services/sendOTPEmail.service.ts index 2d45007..15c1e70 100644 --- a/src/modules/host/services/sendOTPEmail.service.ts +++ b/src/modules/host/services/sendOTPEmail.service.ts @@ -4,7 +4,10 @@ import ApiError from "@/common/utils/helper/ApiError"; export async function sendOtpEmailForHost( emailAddress: string, otp: string | number -): Promise { +): Promise<{ + sent: boolean; + // messageId: string +}> { const subject = "OTP for Host Registration"; @@ -16,11 +19,18 @@ export async function sendOtpEmailForHost( `; try { - await brevoService.sendEmail({ + const result = await brevoService.sendEmail({ recipients: [{ email: emailAddress }], subject, htmlContent, }); + + // console.log("📧 Email sent successfully:", result); + + return { + sent: true, + // messageId: result.messageId + }; } catch (err) { console.error("Brevo email send failed:", err); throw new ApiError(500, "Failed to send OTP to host via email."); diff --git a/src/modules/minglaradmin/handlers/inviteTeammate.ts b/src/modules/minglaradmin/handlers/inviteTeammate.ts index 59fd527..face527 100644 --- a/src/modules/minglaradmin/handlers/inviteTeammate.ts +++ b/src/modules/minglaradmin/handlers/inviteTeammate.ts @@ -6,6 +6,7 @@ import ApiError from '../../../common/utils/helper/ApiError'; import { ROLE } from '../../../common/utils/constants/common.constant'; import { verifyMinglarAdminToken } from '../../../common/middlewares/jwt/authForMinglarAdmin'; import { MINGLAR_INVITATION_STATUS } from '@/common/utils/constants/minglar.constant'; +import { sendInvitationEmailForMinglarAdmin } from '../services/inviteTeammatesEmail.service'; const prismaService = new PrismaService(); const minglarService = new MinglarService(prismaService); @@ -107,6 +108,8 @@ export const handler = safeHandler(async ( // Create invite details - using service await minglarService.createInviteDetails(user.id, adminUser.id, MINGLAR_INVITATION_STATUS.PENDING); + await sendInvitationEmailForMinglarAdmin(emailAddress); + return { statusCode: 200, headers: { diff --git a/src/modules/minglaradmin/services/inviteTeammatesEmail.service.ts b/src/modules/minglaradmin/services/inviteTeammatesEmail.service.ts index 9e47fdc..e0c39b8 100644 --- a/src/modules/minglaradmin/services/inviteTeammatesEmail.service.ts +++ b/src/modules/minglaradmin/services/inviteTeammatesEmail.service.ts @@ -1,9 +1,12 @@ import { brevoService } from "@/common/email/brevoApi"; import ApiError from "@/common/utils/helper/ApiError"; -export async function sendOtpEmail( +export async function sendInvitationEmailForMinglarAdmin( emailAddress: string, -): Promise { +): Promise<{ + sent: boolean; + // messageId: string +}> { const subject = "Minglar Admin: Your Team Invitation"; @@ -14,11 +17,18 @@ export async function sendOtpEmail( `; try { - await brevoService.sendEmail({ + const result = await brevoService.sendEmail({ recipients: [{ email: emailAddress }], subject, htmlContent, }); + + console.log("📧 Email sent successfully:", result); + + return { + sent: true, + // messageId: result.messageId + }; } catch (err) { console.error("Brevo email send failed:", err); throw new ApiError(500, "Failed to send invitation via email."); diff --git a/src/modules/minglaradmin/services/sendOTPEmail.service.ts b/src/modules/minglaradmin/services/sendOTPEmail.service.ts index 7653292..e851d3e 100644 --- a/src/modules/minglaradmin/services/sendOTPEmail.service.ts +++ b/src/modules/minglaradmin/services/sendOTPEmail.service.ts @@ -4,7 +4,10 @@ import ApiError from "@/common/utils/helper/ApiError"; export async function sendOtpEmailForMinglarAdmin( emailAddress: string, otp: string | number -): Promise { +): Promise<{ + sent: boolean; + // messageId: string +}> { const subject = "OTP for Minglar Admin Registration"; @@ -16,11 +19,18 @@ export async function sendOtpEmailForMinglarAdmin( `; try { - await brevoService.sendEmail({ + const result = await brevoService.sendEmail({ recipients: [{ email: emailAddress }], subject, htmlContent, }); + + console.log("📧 Email sent successfully:", result); + + return { + sent: true, + // messageId: result.messageId + }; } catch (err) { console.error("Brevo email send failed:", err); throw new ApiError(500, "Failed to send OTP to minglar admin via email.");