节点 - 用于发送电子邮件,sendgrid和nodemailer之一或组合的选项

时间:2014-12-04 15:49:18

标签: javascript node.js email sendgrid nodemailer

在节点中发送电子邮件不太经验,因为我可以看到有不同的选项可供选择。在以下场景中使用哪个选项?

将节点邮件与sengrid一起使用:
正如我所见,我必须添加额外的包"nodemailer-sendgrid-transport"以强制它们一起工作。
因为var transporter = nodemailer.createTransport({ service: 'SendGrid', auth: {...});无法工作。 (始终返回错误的用户名/密码)

var nodemailer        = require('nodemailer'),
    sendGridTransport = require('nodemailer-sendgrid-transport');

var options = {
    auth: {
        api_user: 'blabla',
        api_key:  'blabla'
    }
};
var client = nodemailer.createTransport(sendGridTransport(options));

var email = {
    to: ['joe@foo.com', 'mike@bar.com'],
    from: 'roger@tacos.com',
    subject: 'Hi there',
    text: 'Awesome sauce',
    html: '<b>Awesome sauce</b>'
};

client.sendMail(email, function(err, info) { ... });

仅使用不带nodemailer软件包的sendgrid模块:

var sendgrid = require('sendgrid')('blabla', 'blabla');

var email = {
    to: ['joe@foo.com', 'mike@bar.com'],
    from: 'roger@tacos.com',
    subject: 'Hi there',
    text: 'Awesome sauce',
    html: '<b>Awesome sauce</b>'
};

sendgrid.send(email, function(err, json) { ... });

因此,对于第二个示例,我将只包含一个包(sengrid),第一种方法我必须包含两个包(nodemailer和nodemailer-sendgrid-transport)。我看到第一种方法是超过第二种更大的抽象,因为我可以更新或完全切换到其他服务传输(例如gmail)或者我可以吗?但另一方面,我没有看到在不同的运输对象之间切换的情况。

侧面问题appart所有这些是如何使用此解决方案的模板。我在官方指南中没有看到有关模板的任何内容,也没有在:https://github.com/sendgrid/sendgrid-nodejshttps://github.com/andris9/Nodemailer处看到:

电子邮件模板除此之外完全不同的故事,我需要安装新的软件包来处理它吗?
最后我觉得我发布了一个非常迟钝的问题。

1 个答案:

答案 0 :(得分:2)

我使用了Mandrill的nodemailer没有任何问题。

这是在我的情况下有效的代码,但你提到的不在你的代码中:

// Create a SMTP transport object
var transport = nodemailer.createTransport("SMTP", {
    service: mainConfigFile.smtpServer.service, // use well known service
    auth: {
        user: mainConfigFile.smtpServer.user,
        pass: mainConfigFile.smtpServer.pass
    }
});

请注意,凭据存储在mainConfigFile中,但很明显是什么意思。

我认为你可以使用nodemailer。

您能否提供有关您收到的错误的更多详细信息?