From f8fcb7512cdcf0ed628ad72dd90a432561f70cce Mon Sep 17 00:00:00 2001 From: mahyargdz Date: Mon, 4 Aug 2025 15:58:36 +0330 Subject: [PATCH] update: new draft logic --- src/modules/email/services/email.service.ts | 65 ++++++++++++++------- 1 file changed, 45 insertions(+), 20 deletions(-) diff --git a/src/modules/email/services/email.service.ts b/src/modules/email/services/email.service.ts index 8afe788..53b5211 100644 --- a/src/modules/email/services/email.service.ts +++ b/src/modules/email/services/email.service.ts @@ -10,6 +10,7 @@ import { EmailMessage } from "../../../common/enums/message.enum"; import { EmailNotificationService } from "../../email-utils/services/email-notification.service"; import { MailboxResolverService } from "../../email-utils/services/mailbox-resolver.service"; import { SearchMessagesMailServerQueryDto } from "../../mail-server/DTO/message.dto"; +import { MessageHeaders } from "../../mail-server/interfaces/messages-response.interface"; import { MailServerService } from "../../mail-server/services/mail-server.service"; import { TemplateProcessorService } from "../../templates/services/template-processor.service"; import { User } from "../../users/entities/user.entity"; @@ -501,29 +502,29 @@ export class EmailService { uploadOnly: true, }; - const user = await this.userRepository.findOne({ wildduckUserId, deletedAt: null }, { populate: ["business"] }); + // const user = await this.userRepository.findOne({ wildduckUserId, deletedAt: null }, { populate: ["business"] }); - if (user && user.business && (updateDraftDto.text || updateDraftDto.html)) { - const processedTemplate = await this.templateProcessorService.processEmailContent(user.business.id, user.id, { - text: updateDraftDto.text!, - html: updateDraftDto.html!, - subject: updateDraftDto.subject, - }); + // if (user && user.business && (updateDraftDto.text || updateDraftDto.html)) { + // const processedTemplate = await this.templateProcessorService.processEmailContent(user.business.id, user.id, { + // text: updateDraftDto.text!, + // html: updateDraftDto.html!, + // subject: updateDraftDto.subject, + // }); - if (processedTemplate.isHtml) { - draftData.html = processedTemplate.content; - draftData.text = ""; - } else { - draftData.text = processedTemplate.content; - draftData.html = ""; - } + // if (processedTemplate.isHtml) { + // draftData.html = processedTemplate.content; + // draftData.text = ""; + // } else { + // draftData.text = processedTemplate.content; + // draftData.html = ""; + // } - const headers = this.generateHeadersForEmailType(user, { - html: draftData.html, - text: draftData.text, - }); - draftData.headers = [...(draftData.headers || []), ...headers]; - } + // const headers = this.generateHeadersForEmailType(user, { + // html: draftData.html, + // text: draftData.text, + // }); + // draftData.headers = [...(draftData.headers || []), ...headers]; + // } const response = await firstValueFrom(this.mailServerService.submission.submitMessage(wildduckUserId, draftData as SendEmailDto)); @@ -540,6 +541,30 @@ export class EmailService { const message = await firstValueFrom(this.mailServerService.messages.getMessage(wildduckUserId, draftsMailboxId, messageId)); + const user = await this.userRepository.findOne({ wildduckUserId, deletedAt: null }, { populate: ["business"] }); + + if (!user) throw new BadRequestException(EmailMessage.USER_NOT_FOUND); + + const processedTemplate = await this.templateProcessorService.processEmailContent(user.business.id, user.id, { + text: message.text || "", + html: message.html?.[0] || "", + subject: message.subject, + }); + + if (processedTemplate.isHtml) { + message.html = [processedTemplate.content]; + message.text = ""; + } else { + message.text = processedTemplate.content; + message.html = []; + } + + const headers = this.generateHeadersForEmailType(user, { + html: message.html?.[0] || "", + text: message.text || "", + }); + message.headers = { ...message.headers, ...headers } as unknown as MessageHeaders; + const result = await firstValueFrom( this.mailServerService.messages.submitDraft(wildduckUserId, draftsMailboxId, messageId, { deleteFiles: false }), );