diff --git a/package.json b/package.json index 9a28427..2322fef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@xtr-dev/payload-mailing", - "version": "0.0.6", + "version": "0.0.7", "description": "Template-based email system with scheduling and job processing for PayloadCMS", "type": "module", "main": "dist/index.js", diff --git a/src/services/MailingService.ts b/src/services/MailingService.ts index c76b1cd..fe4f5d5 100644 --- a/src/services/MailingService.ts +++ b/src/services/MailingService.ts @@ -48,6 +48,20 @@ export class MailingService implements IMailingService { } } + private getDefaultFrom(): string { + const fromEmail = this.config.defaultFrom + const fromName = this.config.defaultFromName + + // Check if fromName exists, is not empty after trimming, and fromEmail exists + if (fromName && fromName.trim() && fromEmail) { + // Escape quotes in the display name to prevent malformed headers + const escapedName = fromName.replace(/"/g, '\\"') + return `"${escapedName}" <${fromEmail}>` + } + + return fromEmail || '' + } + private registerHandlebarsHelpers(): void { Handlebars.registerHelper('formatDate', (date: Date, format?: string) => { if (!date) return '' @@ -128,7 +142,7 @@ export class MailingService implements IMailingService { to: Array.isArray(options.to) ? options.to : [options.to], cc: options.cc ? (Array.isArray(options.cc) ? options.cc : [options.cc]) : undefined, bcc: options.bcc ? (Array.isArray(options.bcc) ? options.bcc : [options.bcc]) : undefined, - from: options.from || this.config.defaultFrom, + from: options.from || this.getDefaultFrom(), replyTo: options.replyTo, subject: subject || options.subject, html, @@ -245,7 +259,7 @@ export class MailingService implements IMailingService { }) as QueuedEmail let emailObject: EmailObject = { - from: email.from || this.config.defaultFrom, + from: email.from || this.getDefaultFrom(), to: email.to, cc: email.cc || undefined, bcc: email.bcc || undefined, @@ -262,7 +276,7 @@ export class MailingService implements IMailingService { } const mailOptions = { - from: emailObject.from || this.config.defaultFrom, + from: emailObject.from, to: emailObject.to, cc: emailObject.cc || undefined, bcc: emailObject.bcc || undefined, diff --git a/src/types/index.ts b/src/types/index.ts index eb30afb..8a7c3e4 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -22,6 +22,7 @@ export interface MailingPluginConfig { emails?: string | Partial } defaultFrom?: string + defaultFromName?: string transport?: Transporter | MailingTransportConfig queue?: string retryAttempts?: number