我正在构建具有Firebase和云功能的Web应用程序。我有一个云功能,每次新用户要订阅时都会创建一个验证码,我需要通过电子邮件发送该验证码。我试图将nodemailer与AWS Simple Email Sender结合使用。我有适用于AWS SES的SMTP凭证,并且此代码在我的本地主机上可以正常运行,但是当我将此云函数部署到Firebase时我无法正常工作,并且出现此错误。
{ Error: queryA EREFUSED email-smtp.us-east-1.amazonaws.com
at QueryReqWrap.onresolve [as oncomplete] (dns.js:213:19)
errno: 'EREFUSED',
code: 'EDNS',
syscall: 'queryA',
hostname: 'email-smtp.us-east-1.amazonaws.com',
command: 'CONN' }
我正在使用节点邮件程序示例。
const nodemailer = require('nodemailer');
async function main() {
let transporter = nodemailer.createTransport({
host: 'email-smtp.us-east-1.amazonaws.com',
port: 465,
secure: true,
auth: {
user: 'thisisfake@fake.com',
pass: 'thisisfake'
}
});
let info = await transporter.sendMail({
from: '"Fred Foo ?" <foo@example.com>',
to: 'bar@example.com, baz@example.com',
subject: 'Hello ✔', // Subject line
text: 'Hello world?', // plain text body
html: '<b>Hello world?</b>' // html body
});
console.log('Message sent: %s', info.messageId);
console.log('Preview URL: %s', nodemailer.getTestMessageUrl(info));
}
main().catch(console.error);
答案 0 :(得分:0)
我的假设是您将Cloud Functions的免费(“ spark”)层用于Firebase。这类功能不允许Google以外的网络连接。 为了解决您的问题,您需要使用Blaze plan,在允许连接的地方以及“随用随付”的地方。即使使用Blaze计划,您也可以免费使用Spark计划,该计划可以合理程度地进行开发和使用,而无需任何费用。