diff --git a/apps/api/src/app/events/usecases/send-message/send-message-email.usecase.ts b/apps/api/src/app/events/usecases/send-message/send-message-email.usecase.ts index 9a2191162e4..2b76c831df1 100644 --- a/apps/api/src/app/events/usecases/send-message/send-message-email.usecase.ts +++ b/apps/api/src/app/events/usecases/send-message/send-message-email.usecase.ts @@ -91,11 +91,12 @@ export class SendMessageEmail extends SendMessageType { } const overrides = command.overrides[integration?.providerId] || {}; let subject = ''; + let preheader = emailChannel.template.preheader; let content: string | IEmailBlock[] = ''; const payload = { subject: emailChannel.template.subject, - preheader: emailChannel.template.preheader, + preheader, branding: { logo: organization.branding?.logo, color: organization.branding?.color || '#f47373', @@ -117,10 +118,22 @@ export class SendMessageEmail extends SendMessageType { organization, subscriber, command, - emailChannel.template.preheader + preheader ); - content = await this.getContent(isEditorMode, emailChannel, command, subscriber, subject, organization); + content = await this.getContent( + isEditorMode, + emailChannel, + command, + subscriber, + subject, + organization, + preheader + ); + + if (preheader) { + preheader = await this.renderContent(preheader, subject, organization, subscriber, command, preheader); + } } catch (e) { await this.createExecutionDetails.execute( CreateExecutionDetailsCommand.create({ @@ -178,7 +191,7 @@ export class SendMessageEmail extends SendMessageType { customTemplate: emailChannel.template.contentType === 'customHtml' ? (content as string) : undefined, data: { subject, - preheader: emailChannel.template.preheader, + preheader, branding: { logo: organization.branding?.logo, color: organization.branding?.color || '#f47373', @@ -360,7 +373,8 @@ export class SendMessageEmail extends SendMessageType { command: SendMessageCommand, subscriber: SubscriberEntity, subject, - organization: OrganizationEntity + organization: OrganizationEntity, + preheader ): Promise { if (isEditorMode) { const content: IEmailBlock[] = [...emailChannel.template.content] as IEmailBlock[]; @@ -369,23 +383,8 @@ export class SendMessageEmail extends SendMessageType { * We need to trim the content in order to avoid mail provider like GMail * to display the mail with `[Message clipped]` footer. */ - block.content = await this.renderContent( - block.content, - subject, - organization, - subscriber, - command, - emailChannel.template.preheader - ); - block.content = block.content.trim(); - block.url = await this.renderContent( - block.url || '', - subject, - organization, - subscriber, - command, - emailChannel.template.preheader - ); + block.content = await this.renderContent(block.content, subject, organization, subscriber, command, preheader); + block.url = await this.renderContent(block.url || '', subject, organization, subscriber, command, preheader); } return content; @@ -402,7 +401,7 @@ export class SendMessageEmail extends SendMessageType { command: SendMessageCommand, preheader?: string ) { - return await this.compileTemplate.execute( + const renderedContent = await this.compileTemplate.execute( CompileTemplateCommand.create({ templateId: 'custom', customTemplate: content as string, @@ -424,5 +423,7 @@ export class SendMessageEmail extends SendMessageType { }, }) ); + + return renderedContent.trim(); } }