Pass variable to html template in nodemailer

前端 未结 8 2178
礼貌的吻别
礼貌的吻别 2021-01-30 16:45

I want to send email with nodemailer using html template. In that template I need to inject some dynamically some variables and I really can\'t do that. My code:



        
8条回答
  •  野的像风
    2021-01-30 17:41

    If you're using Nodemailer 2.0.0 or higher, check this documentation: https://community.nodemailer.com/2-0-0-beta/templating/ There they explain how to make use of external rendering with templates like that:

    // external renderer
    var EmailTemplate = require('email-templates').EmailTemplate;
    var send = transporter.templateSender(new EmailTemplate('template/directory'));
    

    They also give this example:

    // create template based sender function
    // assumes text.{ext} and html.{ext} in template/directory
    var sendPwdReminder = transporter.templateSender(new EmailTemplate('template/directory'), {
        from: 'sender@example.com',
    });
    

    where you see how to pass variables.

    You will need the email-templates module: https://github.com/crocodilejs/node-email-templates and a template engine of your choice.

    Also in the documentation of email-templates you'll find how to make your file structure in order that your templates can be found:

    html.{{ext}} (required) - for html format of email

    text.{{ext}} (optional) - for text format of email style.

    {{ext}}(optional) - styles for html format subject.

    {{ext}}(optional) - for subject of email

    See supported template engines for possible template engine extensions (e.g. .ejs, .jade, .nunjucks) to use for the value of {{ext}} above.

    You may prefix any file name with anything you like to help you identify the files more easily in your IDE. The only requirement is that the filename contains html., text., style., and subject. respectively.

提交回复
热议问题