Add an email fallback to Mailjet

This commit is contained in:
Jackson Harper
2024-03-31 18:53:12 +08:00
parent 37f61b0ccb
commit cfe4315fe2

View File

@ -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<boolean> => {
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