mirror of
https://github.com/xtr-dev/payload-mailing.git
synced 2025-12-10 00:03:23 +00:00
✨ FEATURE: Add PayloadCMS task for queuing template emails
- Add sendTemplateEmailTask with comprehensive input schema - Support template rendering, email parsing, and scheduling - Include TypeScript interface SendTemplateEmailInput for type safety - Add task to exports for easy import and usage - Support custom email collection fields via extensible input - Add comprehensive documentation with usage examples Users can now: ✅ Import and add task to their Payload jobs configuration ✅ Queue emails programmatically via payload.jobs.queue() ✅ Use admin panel form interface for manual email queuing ✅ Get full TypeScript support with proper input types ✅ Extend with custom fields from their email collection Example usage: ```typescript import { sendTemplateEmailTask } from '@xtr-dev/payload-mailing' // Add to Payload config export default buildConfig({ jobs: { tasks: [sendTemplateEmailTask] } }) // Queue from code await payload.jobs.queue({ task: 'send-template-email', input: { templateSlug: 'welcome', to: ['user@example.com'], variables: { name: 'John' } } }) ``` 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
75
README.md
75
README.md
@@ -598,6 +598,81 @@ await processEmails(payload)
|
||||
await retryFailedEmails(payload)
|
||||
```
|
||||
|
||||
## PayloadCMS Task Integration
|
||||
|
||||
The plugin provides a ready-to-use PayloadCMS task for queuing template emails:
|
||||
|
||||
### 1. Add the task to your Payload config
|
||||
|
||||
```typescript
|
||||
import { buildConfig } from 'payload/config'
|
||||
import { sendTemplateEmailTask } from '@xtr-dev/payload-mailing'
|
||||
|
||||
export default buildConfig({
|
||||
// ... your config
|
||||
jobs: {
|
||||
tasks: [
|
||||
sendTemplateEmailTask,
|
||||
// ... your other tasks
|
||||
]
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### 2. Queue emails from your code
|
||||
|
||||
```typescript
|
||||
import type { SendTemplateEmailInput } from '@xtr-dev/payload-mailing'
|
||||
|
||||
// Queue a template email
|
||||
const result = await payload.jobs.queue({
|
||||
task: 'send-template-email',
|
||||
input: {
|
||||
templateSlug: 'welcome-email',
|
||||
to: ['user@example.com'],
|
||||
cc: ['manager@example.com'],
|
||||
variables: {
|
||||
firstName: 'John',
|
||||
activationUrl: 'https://example.com/activate/123'
|
||||
},
|
||||
priority: 1,
|
||||
// Add any custom fields from your email collection
|
||||
customField: 'value'
|
||||
} as SendTemplateEmailInput
|
||||
})
|
||||
|
||||
// Queue a scheduled email
|
||||
await payload.jobs.queue({
|
||||
task: 'send-template-email',
|
||||
input: {
|
||||
templateSlug: 'reminder-email',
|
||||
to: ['user@example.com'],
|
||||
variables: { eventName: 'Product Launch' },
|
||||
scheduledAt: new Date('2024-01-15T10:00:00Z').toISOString(),
|
||||
priority: 3
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### 3. Use in admin panel workflows
|
||||
|
||||
The task can also be triggered from the Payload admin panel with a user-friendly form interface that includes:
|
||||
- Template slug selection
|
||||
- Email recipients (to, cc, bcc)
|
||||
- Template variables as JSON
|
||||
- Optional scheduling
|
||||
- Priority setting
|
||||
- Any custom fields you've added to your email collection
|
||||
|
||||
### Task Benefits
|
||||
|
||||
- ✅ **Easy Integration**: Just add to your tasks array
|
||||
- ✅ **Type Safety**: Full TypeScript support with `SendTemplateEmailInput`
|
||||
- ✅ **Admin UI**: Ready-to-use form interface
|
||||
- ✅ **Flexible**: Supports all your custom email collection fields
|
||||
- ✅ **Error Handling**: Comprehensive error reporting
|
||||
- ✅ **Queue Management**: Leverage Payload's job queue system
|
||||
|
||||
## Job Processing
|
||||
|
||||
The plugin automatically adds a unified email processing job to PayloadCMS:
|
||||
|
||||
Reference in New Issue
Block a user