为NestJS Mailer在ejs模板中设置主题



我们正在使用NestJS Mailer,它是nodemailer的包装器,并且(目前)使用EJS从我们的应用程序发送模板化的HTML电子邮件。

我希望在EJS模板文件中定义电子邮件主题,以及消息的其余部分,但似乎需要在消息对象中设置主题。

是否有任何方法,使用EJS或任何其他模板引擎(例如车把),在模板文件中设置主题,并有NestJS Mailer使用那一个?

类似以下语句的内容:

Subject: 'Hello, subject!'
<html>
...etc
</html>

我创建了一个解决方案,虽然我对它不完全满意,但它现在可以完成工作。

我仍然对替代解决方案感兴趣-特别是已经内置到nodemailer, NestJS Mailer或相关模板引擎中的任何东西。

我的解决方法是创建一个扩展到NestJS MailerEjsAdapter,它将setSubject()-函数添加到上下文对象。然后在模板中调用这个函数:

export class EjsAdapterExtension extends EjsAdapter {
public compile(mail: any, callback: any, mailerOptions: MailerOptions): void {
if (mail && mail.data && mail.data.context) {
mail.data.context.setSubject = (subject: string) => {
mail.data.subject = mail.data.subject || subject || mailerOptions.defaults.subject;
};
}
super.compile(mail, callback, mailerOptions);
}
}
<% setSubject('My template subject'); %>
<html>
...etc
</html>

最新更新