node.js - 使用 Firebase Cloud Functions 时 Nodemailer 查询 A EREFUSED localhost
问题描述
每当在 Firebase 数据库中创建新订单时,我都会尝试向管理员帐户发送电子邮件。我为此使用 Cloud Functions 和 Nodemailer,但出现以下错误:
错误:QueryReqWrap.onresolve [as oncomplete] (dns.js:213:19) 处的 queryA EREFUSED localhost
这是代码:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const nodemailer = require('nodemailer');
admin.initializeApp();
/**
* Here we're using Gmail to send
*/
let transporter = nodemailer.createTransport({
service: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: 'myemail@gmail.com',
pass: 'mypass'
}
});
exports.sendMail = functions.database.ref('/Order/{orderId}').onCreate((snapshot, context) =>{
const dest = 'destination@gmail.com';
const mailOptions = {
from: 'Risal Fajar <noreply@bukakata.com>',
to: dest,
subject: 'I\'M A PICKLE!!!',
html: `<p style="font-size: 16px;">Pickle Riiiiiiiiiiiiiiiick!!</p>
<br />
<img src="https://images.prod.meredith.com/product/fc8754735c8a9b4aebb786278e7265a5/1538025388228/l/rick-and-morty-pickle-rick-sticker" />
`
};
// returning result
return transporter.sendMail(mailOptions).then(() => {
console.log('Mail sent to ', dest);
});
});
即使我输入了smtp.gmail.com,我也不知道为什么错误显示为localhost
编辑:我添加了 transport.verify() 这就是结果
{ 错误:QueryReqWrap.onresolve 处的 queryA EREFUSED localhost [as oncomplete] (dns.js:213:19) errno:'EREFUSED',代码:'EDNS',系统调用:'queryA',主机名:'localhost',命令:'连接'}
解决方案
解决它
我通过将传输器配置(更改服务名称)更改为:
let transporter = nodemailer.createTransport({
service: 'gmail',
port: 465,
secure: true,
auth: {
user: 'myemail@gmail.com',
pass: 'mypass'
}
});
推荐阅读
- python - AirFlow 调度程序 - 运行日期
- .htaccess - htaccess 将旧类别的子页面重定向到不同类别的相同页面
- android - 错误“应用程序未安装”当我想将新更新上传到我的应用程序时
- c++ - 将文本文件单词插入 AVL
- angular - 无法使用 Angular 8 升级 Angular 材质
- javascript - 为什么在中止其他 ajax 调用后将 ajax 重定向到操作 url?
- node.js - 从 NodeJs 作为后端进行 3rd 方 API 调用并渲染在 ReactJs 前端接收到的数据
- angular - 当我使用 ng build 时停止 angular cli 要求收集分析
- oauth-2.0 - php - 存储 access_token 的最佳解决方案
- keycloak - 使用 scriptMapper 计算 Keycloak 客户端属性