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

Sky*_*ker 7 javascript node.js express mailgun

我从我的应用程序向用户发送电子邮件通知,但目前我只将其作为文本发送.我想发送它的风格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>'
           };
Run Code Online (Sandbox Code Playgroud)

编译上面的代码不起作用,它不会像我已经把的样式.我创建了一个单独的HTML文件我的本地目录中为每种类型的电子邮件我要送,我希望能够附上HTML文件到我的邮箱.

像这样的东西:

var data = {
              from: 'my app',
              to: user.email,
              subject: 'Welcome',
              html: welcomeToSiteEmail.html
           };
Run Code Online (Sandbox Code Playgroud)

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

dun*_*all 11

您可以mailgun-js与一起使用mailcomposer来发送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;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)


Hay*_*ton 7

或者,您可以在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.
Run Code Online (Sandbox Code Playgroud)

但是,我建议您在设计HTML电子邮件时要非常彻底.编写HTML电子邮件与网络中的html非常不同.有更多种类的电子邮件客户端会以不同的方式呈现您的HTML,而某些,例如Outlook for Windows和gmail web,将不会很好地处理您的HTML.关于设计HTML电子邮件的最佳实践,Litmus有一些很好的资源.

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