nodejs中的可重用电子邮件结构



我需要根据nodejs中编写的某些业务函数的结果向支持团队和用户发送电子邮件。我正在使用以下方法。

let emailStartTags = "<html><body><p>Hi Team,</p><p>";
const emailEndTags = "</p><p>Thanks,<br>ABC Support</p></body></html>"  
const Subject = `DEV Order No 1234`
let emailContent="";
emailContent+=emailStartTags;
const s3FilesList = await this.getFilesFromS3Directory(directoryName)
emailContent+=<p>S3 files are ${s3FilesList}<p>
emailContent+=emailEndTags
await this.sendEmail(emailContent,Subject,From,To);

有没有其他方法可以让我更好地撰写电子邮件内容,而不是像上面那样硬编码。可能正在使用一个带有getters-setter的电子邮件类。如果是的话,你能帮我提供一些参考吗。

我认为你现在用错了。你不应该那样使用动态电子邮件内容。这对你来说不是一个练习解决方案。我使用nodemailer在nodejs上发布了一封电子邮件。这是最受欢迎的发送电子邮件的软件包之一。

你可以这样使用。

mailer.ts:

import nodemailer from "nodemailer";
export default nodemailer.createTransport({
host: "example_host",
port: 2525,
auth: {
user: process.env.MAILTRAP_AUTH_USER,
pass: process.env.MAILTRAP_AUTH_PASSWORD
}
});

compile-email.ts for dynamic html:

import * as path from 'path';
import * as fs from 'fs';
import * as handlebars from 'handlebars';
export default (emailPath: string, replacements: object = {}): string => {
const filePath = path.join(__dirname, `../../views/emails/${emailPath}.html`);
const source = fs.readFileSync(filePath, 'utf-8').toString();
const template = handlebars.compile(source);
return template(replacements);
};

还有一份典型的工作。每个邮件投递过程都是一项工作。例如,send-register-code.ts:

import mailer from "../utils/email/mailer";
import compileEmail from "../utils/email/compile-email";
export default async (to: string, replacements: object) => {
await mailer.sendMail({
to,
from: 'keymanager@example.com',
subject: "Register Code",
html: compileEmail('register-code-email', replacements),
});
}

register-code.html:

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Register Code: {{code}}
</body>
</html>

最后,你怎么能胜任这份工作?例如,使用发送寄存器代码作业:

import sendRegisterCode from '../../jobs/send-register-code';
sendRegisterCode(email, { code });

我想你会有一个比现在更清晰的结构来发布电子邮件。我希望它能对你有所帮助

最新更新