2016-04-21 28 views
5

Tôi gửi thông báo qua email tới người dùng của mình từ ứng dụng của tôi nhưng hiện tại tôi chỉ gửi email đó dưới dạng văn bản. Tôi muốn gửi email HTML theo kiểu.Gửi email HTML từ Node.JS bằng cách sử dụng MailGun

Hiện nay tôi cố gắng này:

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

Biên dịch mã trên không hoạt động, nó không giống như các phong cách tôi đã đưa vào tôi đã tạo ra một tập tin HTML riêng biệt trong thư mục địa phương của tôi cho. mỗi loại email tôi muốn gửi và tôi muốn có thể đính kèm tệp html đó vào email của mình.

Something như thế này:

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

là ở trên có thể? Chúng tôi rất trân trọng bất kỳ sự giúp đỡ nào.

+0

Tôi cũng chạy vào này và module 'mailgun-js' không ủng hộ việc rất quan trọng 'template' tài sản (Tôi tin rằng đây là những gì bạn muốn, thay vì' bất động sản html') . Tôi tìm thấy dự án github này https://github.com/mailgun/node-prelaunch có một giải pháp làm việc, nơi họ kết hợp các khuôn mẫu của nodemailer với việc vận chuyển mailgun-js. Nếu điều này trả lời câu hỏi của bạn, tôi có thể rút ra mã cụ thể xử lý việc này và tạo câu trả lời. – skotturi

Trả lời

9

Bạn có thể sử dụng mailgun-js cùng với mailcomposer để gửi email được định dạng HTML.

Các mailgun-js docs bao gồm một ví dụ:

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

Làm việc cho tôi. Cảm ơn! – tanz

4

Cách khác, bạn có thể kiểm tra nodemailer trên NPM. Đó là một gói tuyệt vời: dễ sử dụng và tài liệu mở rộng. Với nodemailer, bạn có thể làm điều gì đó như thế này

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]m', '[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. 

Tuy nhiên, tôi khuyên bạn nên thiết kế kỹ lưỡng các email html của mình. Viết email html rất khác với html trong web. Có nhiều ứng dụng khách email khác nhau sẽ làm cho html của bạn khác đi, và một số, Outlook cho Windows và gmail web chẳng hạn, sẽ không xử lý html của bạn rất độc đáo. Litmus có một số tài nguyên hay về các phương pháp hay nhất để thiết kế email html.

Đề xuất của tôi sẽ sử dụng foundation for emails để tạo kiểu tóc, sử dụng inky để đơn giản hóa ngữ nghĩa của soạn email html và inline-css để nội tuyến tất cả các kiểu của bạn. Ngay cả khi bạn sử dụng các phương pháp thay thế gửi thư, hãy kiểm tra các tài nguyên này để thiết kế nó. Họ sẽ giúp bạn tiết kiệm rất nhiều đau đầu.

-1

tương tự như This

trước tiên, hãy đọc tệp và gửi dưới dạng nội dung HTML.

Hãy thử this

Các vấn đề liên quan