Fix template relationship population in sendEmail and bump version to 0.4.18

The sendEmail function now properly populates the template relationship field when using template-based emails. This ensures:
- Template relationship is set on the email document
- templateSlug field is auto-populated via beforeChange hook
- beforeSend hook has access to the full template relationship
- Proper record of which template was used for each email

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-06 23:48:23 +02:00
parent 107f67e22b
commit f431786907
2 changed files with 18 additions and 1 deletions

View File

@@ -50,6 +50,22 @@ export const sendEmail = async <TEmail extends BaseEmailDocument = BaseEmailDocu
let emailData: Partial<TEmail> = { ...options.data } as Partial<TEmail>
if (options.template) {
// Find the template document to get its ID for the relationship field
const templatesCollection = mailingConfig.collections.templates || 'email-templates'
const { docs: templateDocs } = await payload.find({
collection: templatesCollection as any,
where: {
slug: {
equals: options.template.slug,
},
},
limit: 1,
})
if (!templateDocs || templateDocs.length === 0) {
throw new Error(`Template not found: ${options.template.slug}`)
}
const { html, text, subject } = await renderTemplate(
payload,
options.template.slug,
@@ -58,6 +74,7 @@ export const sendEmail = async <TEmail extends BaseEmailDocument = BaseEmailDocu
emailData = {
...emailData,
template: templateDocs[0].id,
subject,
html,
text,