Mailing on top of Background Jobs.
npm install @universal-packages/background-jobs-mailing
npm install @universal-packages/background-jobs
npm install redis
After installation jobs will automatically load email job classes, pass all the mailing options through the jobs option loaderOptions
.
import { Jobs } from '@universal-packages/background-jobs-mailing'
import WelcomeEmail from './src/emails/Welcome.email'
const jobs = new Jobs({ jobsLocation: './src/jobs', loaderOptions: { mailing: { engine: 'local' } } })
await jobs.prepare()
await WelcomeEmail.sendLater({ userId: 123 })
await jobs.release()
// WelcomeEmail.job.js|ts
import { BaseEmail } from '@universal-packages/background-jobs-mailing'
export default class WelcomeEmail extends BaseEmail {
async build(params) {
const user = await User.find(params.userId)
return { subject: `Welcome ${user.name}`, to: user.email, from: 'support@company.com' }
}
}
Mailing
takes the same options as the original Mailing.
Base interface to enable a JS class to be used as a mailer class, it will need a build
method that return the send options.
Same static properties as BaseJob
Instead of passing a templatesLocation
an Email class can automatically infer a template derived from the same name as the class.
- emails
|- Welcome.email.js
|- welcome-email.html
|- welcome-email.txt
Now the welcome-email
template will be rendered and used as html contents when sending the welcome email without specifying it.
This library is developed in TypeScript and shipped fully typed.
The development of this library happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving this library.