【问题标题】:Setting subject in ejs template for NestJS Mailer在 NestJS Mailer 的 ejs 模板中设置主题
【发布时间】:2021-09-22 09:52:12
【问题描述】:

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

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

有什么方法可以使用 EJS 或任何其他模板引擎(例如把手)在模板文件中设置主题,并让 NestJS Mailer 使用那个?

类似的东西:

Subject: 'Hello, subject!'

<html>
...etc
</html>

【问题讨论】:

    标签: nestjs ejs nodemailer


    【解决方案1】:

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

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

    我的解决方法是创建 NestJS 邮件程序 EjsAdapter 的扩展,它将 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>
    

    【讨论】:

      猜你喜欢
      • 2022-12-14
      • 2011-11-27
      • 2018-02-19
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      相关资源
      最近更新 更多