Как добавить изображение в мою электронную почту, нодмейлер и руль? - PullRequest
0 голосов
/ 01 мая 2019

Я использую nodemailer вместе с рулем в моем проекте node. Письмо работает нормально, но я не могу прикрепить изображение в HTML-шаблон, созданный рулем. Я попытался дать его в тег IMG SRC непосредственно в HTML, но все еще не работает. То, что у меня есть, это то, что изображение в виде SVG и в моей папке активов проекта.

Я также попробовал пример на официальном сайте nodemailer, который также не работал. Пожалуйста, помогите мне!

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

Это моя функция, которая будет вызываться при получении запроса от клиента.

sendEmail.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);
        }
      });
    }
  );
};

Это мой файл html-шаблона

EmailTemplate.html

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

Я хочу вставить изображение SVG в этот HTML!

1 Ответ

0 голосов
/ 01 мая 2019

просто добавьте параметр attachments в ваш объект mailoptions:

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

, затем добавьте тег img в ваш HTML <img src="cid:imagename">

...