Add mailing plugin with templates, outbox, and job processing

This commit is contained in:
2025-09-12 19:18:14 +02:00
parent ebaed4fd07
commit ed9d979d3e
33 changed files with 13904 additions and 0 deletions

30
src/utils/helpers.ts Normal file
View File

@@ -0,0 +1,30 @@
import { Payload } from 'payload'
import { SendEmailOptions } from '../types'
export const getMailing = (payload: Payload) => {
const mailing = (payload as any).mailing
if (!mailing) {
throw new Error('Mailing plugin not initialized. Make sure you have added the mailingPlugin to your Payload config.')
}
return mailing
}
export const sendEmail = async (payload: Payload, options: SendEmailOptions): Promise<string> => {
const mailing = getMailing(payload)
return mailing.service.sendEmail(options)
}
export const scheduleEmail = async (payload: Payload, options: SendEmailOptions): Promise<string> => {
const mailing = getMailing(payload)
return mailing.service.scheduleEmail(options)
}
export const processOutbox = async (payload: Payload): Promise<void> => {
const mailing = getMailing(payload)
return mailing.service.processOutbox()
}
export const retryFailedEmails = async (payload: Payload): Promise<void> => {
const mailing = getMailing(payload)
return mailing.service.retryFailedEmails()
}