Pass variable to html template in nodemailer

前端 未结 8 2375
礼貌的吻别
礼貌的吻别 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:50

    I use it in all my projects. more clean and up to date and understandable. callback hell doesn't exist. sendMail.ts The html file reads with handlebar, puts the relevant variables into the contents, and sends.

    import * as nodemailer from 'nodemailer';
    import * as handlebars from 'handlebars';
    import * as fs from 'fs';
    import * as path from 'path';
    
    export async function sendEmail(email: string, subject: string, url: string) {
      const filePath = path.join(__dirname, '../emails/password-reset.html');
      const source = fs.readFileSync(filePath, 'utf-8').toString();
      const template = handlebars.compile(source);
      const replacements = {
        username: "Umut YEREBAKMAZ"
      };
      const htmlToSend = template(replacements);
      const transporter = nodemailer.createTransport({
        host: "smtp.mailtrap.io",
        port: 2525, // 587
        secure: false,
        auth: {
          user: "fg7f6g7g67",
          pass: "asds7ds7d6"
        }
      });
      const mailOptions = {
        from: '"noreply@yourdomain.com" ',
        to: email,
        subject: subject,
        text: url,
        html: htmlToSend
      };
      const info = await transporter.sendMail(mailOptions);
      console.log("Message sent: %s", info.messageId);
      console.log("Preview URL: %s", "https://mailtrap.io/inboxes/test/messages/");
    
    }
    

提交回复
热议问题