如何在我的电子邮件、nodemailer 和车把中添加图像?

Sou*_*kar 2 javascript node.js express handlebars.js nodemailer

我在我的节点项目中使用了 nodemailer 和车把。电子邮件工作正常,但我无法在车把创建的 html 模板中附加图像。我尝试直接在 html 中将其放在 img src 标记中,但仍然不起作用。我所拥有的是图像是 svg 形式,位于项目的资产文件夹中。

我还在 Nodemailer 官方网站上尝试了该示例,但效果不佳。请帮帮我!

https://nodemailer.com/message/embedded-images/

这是我的函数,当我收到客户端的请求时将调用该函数。

发送电子邮件.js

var nodemailer = require("nodemailer");
const emailConfig = require("../readEmailConfigFile");

//reading username and password from json file
let fromemail = emailConfig.readFromEmail();
let password = emailConfig.readFromPassword();
var handlebars = require("handlebars");
var fs = require("fs");

const readHTMLFile = function(path, callback) {
  fs.readFile(path, { encoding: "utf-8" }, function(err, html) {
    if (err) {
      throw err;
      callback(err);
    } else {
      callback(null, html);
    }
  });
};

/* Method for sending Email */
const sendEmail = (details) => {
  var transporter = nodemailer.createTransport({
    service: "gmail",
    auth: {
      user: fromemail,
      pass: password
    }
  });

  readHTMLFile(
    __dirname + "/../emailTemplates/EmailTemplate.html",
    function(err, html) {
      var template = handlebars.compile(html);

      var replacements = {
        firstName: details.firstName,
        lastName: details.lastName,
        address: details.address,
      };

      var htmlToSend = template(replacements);
      var mailOptions = {
        from: fromemail,
        to: details.email,
        subject: "ABC",
        html: htmlToSend
      };
      transporter.sendMail(mailOptions, function(error, info) {
        if (error) {
          console.log(error);
          callback(error);
        } else {
          console.log("Email Sent : " + info.response);
        }
      });
    }
  );
};
Run Code Online (Sandbox Code Playgroud)

这是我的 html 模板文件

电子邮件模板.html

<html>
  <head>
    <title> </title>
  </head>
  <body>
    <p>
      Dear {{{firstName}}} {{{lastName}}}, your address is {{{address}}}</span
      >
    </p>
  </body>
</html>

Run Code Online (Sandbox Code Playgroud)

我想在这个 html 中嵌入一个 svg 图像!

Ahm*_*far 16

只需将附件参数添加到您的 mailoptions 对象中:

    var mailOptions = {
    from: fromemail,
    to: details.email,
    subject: "ABC",
    attachments: [{
        filename: 'imagename.svg',
          path: __dirname +'/assets/imagename.svg',
         cid: 'imagename'
  }],
    html: htmlToSend
  };
Run Code Online (Sandbox Code Playgroud)

然后在 HTML 中添加 img 标签<img src="cid:imagename">