在节点中发送电子邮件不太经验,因为我可以看到有不同的选项可供选择。在以下场景中使用哪个选项?
将节点邮件与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-nodejs或https://github.com/andris9/Nodemailer处看到:
电子邮件模板除此之外完全不同的故事,我需要安装新的软件包来处理它吗?
最后我觉得我发布了一个非常迟钝的问题。
答案 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。
您能否提供有关您收到的错误的更多详细信息?