From cfe4315fe2b216426dd0cce07bf2a28f474f1bda Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Sun, 31 Mar 2024 18:53:12 +0800 Subject: [PATCH] Add an email fallback to Mailjet --- packages/api/src/services/send_emails.ts | 43 ++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/packages/api/src/services/send_emails.ts b/packages/api/src/services/send_emails.ts index 279b193f9..246194cb1 100644 --- a/packages/api/src/services/send_emails.ts +++ b/packages/api/src/services/send_emails.ts @@ -1,6 +1,8 @@ import { env } from '../env' import { generateVerificationToken } from '../utils/auth' +import { logger } from '../utils/logger' import { sendEmail } from '../utils/sendEmail' +import mailjet from 'node-mailjet' export const sendConfirmationEmail = async (user: { id: string @@ -16,6 +18,10 @@ export const sendConfirmationEmail = async (user: { link, } + if (process.env.USE_MAILJET) { + return sendWithMailJet(user.email, link) + } + return sendEmail({ from: env.sender.message, to: user.email, @@ -24,6 +30,43 @@ export const sendConfirmationEmail = async (user: { }) } +const sendWithMailJet = async ( + email: string, + link: string +): Promise => { + if (!process.env.MAILJET_API_KEY || !process.env.MAILGET_SECRET_KEY) { + return false + } + + const client = mailjet.apiConnect( + process.env.MAILJET_API_KEY, + process.env.MAILGET_SECRET_KEY + ) + + try { + const request = await client.post('send', { version: 'v3.1' }).request({ + Messages: [ + { + From: { + Email: 'no-reply@omnivore.app', + }, + To: [ + { + Email: email, + Name: 'Omnivore', + }, + ], + Subject: 'Your Omnivore verification link', + TextPart: `Your Omnivore verification link ${link}`, + }, + ], + }) + } catch (err) { + logger.error('error sending with mailjet', { err }) + } + return true +} + export const sendVerificationEmail = async (user: { id: string name: string