Skip to content

Commit ffa2bec

Browse files
committed
fix: replaced mailsender library with nodemailer
1 parent 9f130ea commit ffa2bec

File tree

2 files changed

+35
-30
lines changed

2 files changed

+35
-30
lines changed

src/emailManager/mailSender.ts

+29-23
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,42 @@
11
import * as dotenv from 'dotenv';
2-
import { MailerSend, EmailParams, Sender, Recipient } from "mailersend";
2+
import nodemailer from 'nodemailer';
33

44
dotenv.config();
55

6-
export const mailSend = new MailerSend({
7-
apiKey: process.env.MAIL_SENDER_API_TOKEN || '',
8-
})
9-
const domainEmail: string = process.env.MAIL_SENDER_DOMAIN_EMAIL || '';
10-
const appName: string = process.env.APP_NAME || '';
6+
const mailHost: string = process.env.GOOGLE_MAIL_HOST || '';
7+
const mailPort: number = parseInt(process.env.GOOGLE_MAIL_PORT || '0');
8+
const mailSecure: boolean = process.env.GOOGLE_MAIL_SECURE === 'true';
9+
const mailUser: string = process.env.GOOGLE_MAIL_USER || '';
10+
const mailPassword: string = process.env.GOOGLE_MAIL_PASSWORD || '';
1111

12-
let sentFrom: Sender;
13-
let emailRecipients: Recipient[];
12+
const transporter = nodemailer.createTransport({
13+
host: mailHost,
14+
port: mailPort,
15+
secure: mailSecure,
16+
auth: {
17+
user: mailUser,
18+
pass: mailPassword
19+
}
20+
})
1421

15-
export const sendEmail = async (tenantName: string, recipients: Recipient[], bccRecipients: Recipient[], subject: string,
16-
htmlContent: string) => {
17-
sentFrom = new Sender(domainEmail, `${appName}_${tenantName}`);
18-
emailRecipients = recipients;
22+
export const sendEmail = async (tenantName: string, recipientsEmail: string[], subject: string, htmlContent: string) => {
1923
try {
20-
await mailSend.email.send(emailParams(sentFrom, recipients, bccRecipients, subject, htmlContent));
24+
await transporter.sendMail({
25+
from: mailUser,
26+
to: recipientsEmail.join(', '),
27+
subject: subject,
28+
html: htmlContent
29+
}).then(() => {
30+
console.log("Tenant:", tenantName,
31+
"\nMail sent to:", recipientsEmail.join(', '),
32+
"\nSubject:", subject
33+
);
34+
})
2135
} catch (error) {
2236
console.error("Tenant:", tenantName,
23-
"\nMail sent to:", recipients.map(r => r.email).join(', '),
37+
"\nMail sent to:", recipientsEmail.join(', '),
2438
"\nError sending email:", error
2539
);
2640

2741
}
28-
}
29-
30-
const emailParams = (sentFrom: Sender, recipients: Recipient[], bccRecipients: Recipient[],
31-
subject: string, htmlContent: string) => new EmailParams()
32-
.setFrom(sentFrom)
33-
.setTo(recipients)
34-
.setBcc(bccRecipients)
35-
.setSubject(subject)
36-
.setHtml(htmlContent);
42+
}

src/utils/sendEmailUtills.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { Recipient } from "mailersend";
21
import * as emailConstants from "../constants/emailConstants";
32
import { sendEmail } from "../emailManager/mailSender";
43
import { BLOCKED_ACCOUNT_TEMPLATE } from "../emailTemplates/blockedAccountTemplate";
@@ -11,25 +10,25 @@ import { RESET_PASSWORD_TEMPLATE } from "../emailTemplates/resetPasswordTemplate
1110

1211
export const sendRegistrationEmail = (user: IUser, res: Response, userTextPlainPassword: string) => {
1312
const tenantName: string = res.locals.tenant;
14-
const recipients = [new Recipient(user.email, user.firstName)];
13+
const recipients = [user.email];
1514
const subject = emailConstants.REGISTRATION_EMAIL_SUBJECT(tenantName.toUpperCase());
1615
const registrationEmailTemplate = REGISTRATION_TEMPLATE(user.firstName, user.email, tenantName, userTextPlainPassword, 'http://google.it');
17-
sendEmail(tenantName, recipients, [], subject, registrationEmailTemplate);
16+
sendEmail(tenantName, recipients, subject, registrationEmailTemplate);
1817
};
1918

2019
export const sendBlockedAccountEmail = (user: IUser, res: Response) => {
2120
const tenantName: string = capitalizeFirstLetter(res.locals.tenant);
22-
const recipients = [new Recipient(user.email, user.firstName)];
21+
const recipients = [user.email];
2322
const subject = emailConstants.BLOCKED_ACCOUNT_EMAIL_SUBJECT(tenantName.toUpperCase());
2423
const blokedAccountEmailTemplate = BLOCKED_ACCOUNT_TEMPLATE(tenantName, user.firstName, 'http://google.it');
25-
sendEmail(tenantName, recipients, [], subject, blokedAccountEmailTemplate);
24+
sendEmail(tenantName, recipients, subject, blokedAccountEmailTemplate);
2625
};
2726

2827

2928
export const sendResetPasswordEmail = (user: IUser, res: Response, textPlainPassword: string) => {
3029
const tenantName: string = capitalizeFirstLetter(res.locals.tenant);
31-
const recipients = [new Recipient(user.email, user.firstName)];
30+
const recipients = [user.email];
3231
const subject = emailConstants.RESET_PASSWORD_EMAIL_SUBJECT(tenantName.toUpperCase());
3332
const resetPasswordTemplate = RESET_PASSWORD_TEMPLATE(tenantName, user.firstName, user.email, textPlainPassword);
34-
sendEmail(tenantName, recipients, [], subject, resetPasswordTemplate);
33+
sendEmail(tenantName, recipients, subject, resetPasswordTemplate);
3534
}

0 commit comments

Comments
 (0)