从 Node.JS使用 MailGun 发送 HTML 电子邮件

Sending HTML emails from Node.JS using MailGun

本文关键字:发送 HTML 电子邮件 MailGun 使用 Node JS      更新时间:2023-09-26

我从我的应用程序向用户发送电子邮件通知,但目前我只以文本形式发送。我想向它发送样式化的HTML电子邮件。

目前我尝试了这个:

var data = {
              from: 'my app',
              to: user.email,
              subject: 'Welcome',
              html: '<div style="width: 500px; height: 400px: background: #ebebeb; color: #ddd"><p>Hi  + "user.firstName" + 'n ,this email is to inform you that has added their bio to the knowledge Base 'n</p></div>'
           };

编译上面的代码不起作用,它不喜欢我输入的样式。我已经在本地目录中为我要发送的每种类型的电子邮件创建了一个单独的 HTML 文件,我希望能够将该 html 文件附加到我的电子邮件中。

像这样:

var data = {
              from: 'my app',
              to: user.email,
              subject: 'Welcome',
              html: welcomeToSiteEmail.html
           };

以上可能吗?任何帮助将不胜感激。

您可以将

mailgun-jsmailcomposer一起使用来发送HTML格式的电子邮件。

mailgun-js 文档包括一个示例:

var domain = 'mydomain.mailgun.org';
var mailgun = require('mailgun-js')({ apiKey: "YOUR API KEY", domain: domain });
var mailcomposer = require('mailcomposer');
var mail = mailcomposer({
  from: 'you@samples.mailgun.org',
  to: 'mm@samples.mailgun.org',
  subject: 'Test email subject',
  body: 'Test email text',
  html: '<b> Test email text </b>'
});
mail.build(function(mailBuildError, message) {
    var dataToSend = {
        to: 'mm@samples.mailgun.org',
        message: message.toString('ascii')
    };
    mailgun.messages().sendMime(dataToSend, function (sendError, body) {
        if (sendError) {
            console.log(sendError);
            return;
        }
    });
});

或者,你可以在npm上查看nodemailer。这是一个很棒的软件包:易于使用和广泛的文档。使用nodemailer,你可以做这样的事情

var nodemailer = require('nodemailer');
var transport = nodemailer.createTransport({
      host: 'smtp.mailgun.org',
      port: 587,
      secure: false,
      tls: { ciphers: 'SSLv3' },
      auth: {
        user: '<Mailgun SMTP login>',
        pass: '<Mailgun SMTP password>'
      }
    });
transport.sendMail({
        from: '<Mailgun SMTP login>',
        to: ['bob@example.com', 'bill@foobarbaz.com', /*etc*/],
        subject: 'Fancy Email',
        text: 'still send some text to be on the safe side',
        html: { path: 'path/to/email.html' }
    }, callback)
// also returns a promise.

但是,我建议在设计html电子邮件时要非常彻底。编写 html 电子邮件与在 Web 中编写 html 非常不同。有各种各样的电子邮件客户端会以不同的方式呈现您的 html,有些,例如 Outlook for Windows 和 Gmail Web,不会很好地处理您的 html。Litmus有一些关于设计HTML电子邮件的最佳实践的好资源。

我的建议是使用电子邮件的基础作为样式,使用inky来简化编写html电子邮件的语义,并使用inline-css来内联所有样式。即使您使用其他方法来发送邮件,也可以查看这些资源来设计它。他们会为你省去很多头痛。