Skip to content

Commit 3a9fb90

Browse files
authored
Merge pull request #337 from boostcampwm-2024/refactor/email-service-coupling
♻️ refactor: mailService 내 강결합 제거
2 parents 529af02 + 6b7ec27 commit 3a9fb90

File tree

2 files changed

+35
-23
lines changed

2 files changed

+35
-23
lines changed

server/src/common/email/email.service.ts

+29-21
Original file line numberDiff line numberDiff line change
@@ -31,33 +31,41 @@ export class EmailService {
3131
});
3232
}
3333

34-
async sendMail(rss: Rss, approveFlag: boolean, description?: string) {
34+
private async sendMail(
35+
mailOptions: nodemailer.SendMailOptions,
36+
): Promise<void> {
3537
try {
36-
const { subject, content } = this.createEmail(
37-
rss,
38-
approveFlag,
39-
description,
40-
);
41-
await this.transporter.sendMail({
42-
from: `Denamu<${this.emailUser}>`,
43-
to: `${rss.userName}<${rss.email}>`,
44-
subject,
45-
html: content,
46-
});
47-
this.logger.log(`${rss.email} 주소로 메일이 전송되었습니다`);
38+
await this.transporter.sendMail(mailOptions);
39+
this.logger.log(`${mailOptions.to} 이메일 전송 성공`);
4840
} catch (error) {
49-
this.logger.error(
50-
`${rss.email} 주소로 메일 전송 중 오류가 발생했습니다: ${error}`,
51-
);
41+
this.logger.error(`${mailOptions.to} 이메일 전송 실패: ${error}`);
5242
}
5343
}
5444

55-
private createEmail(rss: Rss, approveFlag: boolean, description?: string) {
56-
const result = approveFlag ? `승인` : `거부`;
57-
const mail = {
45+
async sendRssMail(
46+
rss: Rss,
47+
approveFlag: boolean,
48+
description?: string,
49+
): Promise<void> {
50+
const mailOptions = this.createRssRegistrationMail(
51+
rss,
52+
approveFlag,
53+
description,
54+
);
55+
await this.sendMail(mailOptions);
56+
}
57+
58+
private createRssRegistrationMail(
59+
rss: Rss,
60+
approveFlag: boolean,
61+
description?: string,
62+
): nodemailer.SendMailOptions {
63+
const result = approveFlag ? '승인' : '거부';
64+
return {
65+
from: `Denamu<${this.emailUser}>`,
66+
to: `${rss.userName}<${rss.email}>`,
5867
subject: `[🎋 Denamu] RSS 등록이 ${result} 되었습니다.`,
59-
content: createMailContent(rss, approveFlag, this.emailUser, description),
68+
html: createMailContent(rss, approveFlag, this.emailUser, description),
6069
};
61-
return mail;
6270
}
6371
}

server/src/rss/service/rss.service.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,11 @@ export class RssService {
107107
]);
108108
return rejectRss;
109109
});
110-
this.emailService.sendMail(rejectRss, false, rssRejectBodyDto.description);
110+
this.emailService.sendRssMail(
111+
rejectRss,
112+
false,
113+
rssRejectBodyDto.description,
114+
);
111115
}
112116

113117
async readAcceptHistory() {
@@ -167,6 +171,6 @@ export class RssService {
167171
rssAccept,
168172
);
169173
this.feedCrawlerService.saveAiQueue(feedsWithId);
170-
this.emailService.sendMail(rssAccept, true);
174+
this.emailService.sendRssMail(rssAccept, true);
171175
}
172176
}

0 commit comments

Comments
 (0)