2016-04-21 54 views
5

我從我的應用程序向我的用戶發送電子郵件通知,但目前我只將它作爲文本發送。我想發送它的風格的HTML電子郵件。使用MailGun從Node.JS發送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 
      }; 

是上述可能嗎?任何幫助將不勝感激。

+0

我也遇到了這個和'mailgun-js'模塊不支持很重要'template'屬性(我相信這是你想要的,而不是'html'屬性) 。我發現這個github項目https://github.com/mailgun/node-prelaunch有一個工作解決方案,它們將nodemailer的模板和mailgun-js傳輸結合在一起。如果這回答你的問題,我可以拿出專門處理這個問題的代碼並創建一個答案。 – skotturi

回答

9

您可以使用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: '[email protected]', 
    to: '[email protected]', 
    subject: 'Test email subject', 
    body: 'Test email text', 
    html: '<b> Test email text </b>' 
}); 

mail.build(function(mailBuildError, message) { 

    var dataToSend = { 
     to: '[email protected]', 
     message: message.toString('ascii') 
    }; 

    mailgun.messages().sendMime(dataToSend, function (sendError, body) { 
     if (sendError) { 
      console.log(sendError); 
      return; 
     } 
    }); 
}); 
+0

爲我工作。謝謝! – tanz

4

或者,你可以在故宮退房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: ['[email protected]', '[email protected]', /*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(例如Outlook for Windows和Gmail)不會很好地處理您的html。 Litmus有關於設計html電子郵件的最佳實踐的一些很好的資源。

我的建議是將foundation for emails用於您的樣式,使用inky來簡化編寫html電子郵件的語義,並使用inline-css來內聯所有樣式。即使您使用其他發送郵件的方法,請查看這些資源進行設計。他們會爲你節省很多頭痛。

-1

類似This

首先,讀取文件,並把它作爲HTML體。

嘗試this