【问题标题】:Sending HTML emails from Node.JS using MailGun使用 MailGun 从 Node.JS 发送 HTML 电子邮件
【发布时间】:2016-08-14 10:30:51
【问题描述】:

我从我的应用程序向我的用户发送电子邮件通知,但目前我只将其作为文本发送。我想向它发送带有样式的 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-js 模块不支持非常重要的template 属性(我相信这是你想要的,而不是html 属性)。我发现这个 github 项目 github.com/mailgun/node-prelaunch 有一个可行的解决方案,他们将 nodemailer 的模板与 mailgun-js 传输相结合。如果这回答了您的问题,我可以提取专门处理此问题的代码并创建一个答案。

标签: javascript node.js express mailgun


【解决方案1】:

或者,您可以在 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 电子邮件的最佳实践的很好的资源。

我的建议是使用foundation for emails 作为样式,使用inky 简化编写html 电子邮件的语义,使用inline-css 内联所有样式。即使您使用其他发送邮件的方法,也请查看这些资源以进行设计。它们会为您省去很多麻烦。

【讨论】:

  • 很棒的额外提示 - 我已经使用 Litmus 很长时间了 - 多么节省时间!我也刚刚发现这个用于存储身份验证凭据:npmjs.com/package/buttercup
  • 对于 SMPT 传输选项,我必须使用“pass”而不是“password”。
  • 我强烈支持 Hayden Braxton 我使用 mailchimp 来布局 HTML - 他们所见即所得的电子邮件创建者非常出色并且呈现非常好。您可以给自己发送一封测试电子邮件,然后查看 HTML 以提取它。
【解决方案2】:

您可以将mailgun-jsmailcomposer 一起使用以发送HTML 格式的电子邮件。

mailgun-js docs 包含一个示例:

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

【讨论】:

  • 为我工作。谢谢!
猜你喜欢
  • 2018-09-05
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
  • 2017-10-12
  • 1970-01-01
  • 2016-01-24
  • 2014-04-14
  • 2015-03-25
相关资源
最近更新 更多