node.js nodemailer 和 nodemailer-sendinblue-transport 发送邮件失败
node.js nodemailer and nodemailer-sendinblue-transport failing to send email
我已经使用 sendInBlue 创建了一个帐户,并将 nodemailer 和 nodemailer-sendinblue-transport 导入到我的项目中,我试图在其中发送一封简单的确认电子邮件。以下代码是我尝试设置的方式:
const transporter = nodemailer.createTransport(
sendinblueTransport({
auth: {
apiKey: 'key'
}
})
);
以下代码是我的注册方法中负责发送确认邮件的部分:
return transporter.sendMail({
to: email,
from: 'person@gmail.com',
subject: 'Signup succeeded!',
html: '<h1>You successfully signed up!</h1>'
});
当我 运行 我的程序注册过程成功但抛出以下错误而不是电子邮件发送:
Error: Key Not Found In Database (failure, 401)
我读到他们的 v2 API 可能已经贬值,但他们的一位客户支持成员说他们仍然为 nodemailer 提供支持,这可能是什么问题?我也尝试过 sendGrid 和 Mandrill,但前者的网站有很多错误,不允许我登录,而后者需要一个活动域才能发送电子邮件。
谢谢
可以这样解决:
const transporter = nodemailer.createTransport({
service: 'SendinBlue', // no need to set host or port etc.
auth: {
user: 'yourRegisteredEmailOnSendinblue@email.com',
pass: 'smtp password here'
}
});
那么你可以这样称呼它:
transporter.sendMail({
to: 'recipientEmail@email.com',
from: 'senderEmail@email.com',
subject: 'Signup verification',
html: '<h1>Please verify your email</h1><a href="www.google.com">
<button>Verify</button>'
})
.then((res) => console.`enter code here`log("Successfully sent"))
.catch((err) => console.log("Failed ", err))
这对我有用:
const nodemailer = require('nodemailer');
const sibTransport = require('nodemailer-sendinblue-transport');
transport = nodemailer.createTransport(sibTransport({
apiKey: '<my API v2 product key>',
}));
然后按照@Shashank 的描述发送。
v3 密钥的 API url 似乎是“https://api.sendinblue.com/v3/”
默认 createTransport 使用“https://api.sendinblue.com/v2/”
这就是为什么它从一开始就不起作用的原因
我已经使用 sendInBlue 创建了一个帐户,并将 nodemailer 和 nodemailer-sendinblue-transport 导入到我的项目中,我试图在其中发送一封简单的确认电子邮件。以下代码是我尝试设置的方式:
const transporter = nodemailer.createTransport(
sendinblueTransport({
auth: {
apiKey: 'key'
}
})
);
以下代码是我的注册方法中负责发送确认邮件的部分:
return transporter.sendMail({
to: email,
from: 'person@gmail.com',
subject: 'Signup succeeded!',
html: '<h1>You successfully signed up!</h1>'
});
当我 运行 我的程序注册过程成功但抛出以下错误而不是电子邮件发送:
Error: Key Not Found In Database (failure, 401)
我读到他们的 v2 API 可能已经贬值,但他们的一位客户支持成员说他们仍然为 nodemailer 提供支持,这可能是什么问题?我也尝试过 sendGrid 和 Mandrill,但前者的网站有很多错误,不允许我登录,而后者需要一个活动域才能发送电子邮件。
谢谢
可以这样解决:
const transporter = nodemailer.createTransport({
service: 'SendinBlue', // no need to set host or port etc.
auth: {
user: 'yourRegisteredEmailOnSendinblue@email.com',
pass: 'smtp password here'
}
});
那么你可以这样称呼它:
transporter.sendMail({
to: 'recipientEmail@email.com',
from: 'senderEmail@email.com',
subject: 'Signup verification',
html: '<h1>Please verify your email</h1><a href="www.google.com">
<button>Verify</button>'
})
.then((res) => console.`enter code here`log("Successfully sent"))
.catch((err) => console.log("Failed ", err))
这对我有用:
const nodemailer = require('nodemailer');
const sibTransport = require('nodemailer-sendinblue-transport');
transport = nodemailer.createTransport(sibTransport({
apiKey: '<my API v2 product key>',
}));
然后按照@Shashank 的描述发送。
v3 密钥的 API url 似乎是“https://api.sendinblue.com/v3/” 默认 createTransport 使用“https://api.sendinblue.com/v2/”
这就是为什么它从一开始就不起作用的原因