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

时间:2016-04-21 09:51:10

标签: 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>'
           };

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

这样的事情:

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

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

2 个答案:

答案 0 :(得分:11)

您可以mailcomposervar 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; } }); }); 一起发送HTML格式的电子邮件。

mailgun-js docs包含一个示例:

 grid.jqGrid({

}).navGrid('#grid', {search: true}

答案 1 :(得分:5)

或者,您可以在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>',
        password: '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电子邮件与网络中的html非常不同。有更多种类的电子邮件客户端会以不同的方式呈现您的HTML,而某些,例如Outlook for Windows和gmail web,将不会很好地处理您的HTML。关于设计HTML电子邮件的最佳实践,Litmus有一些很好的资源。

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