使用 Firebase Cloud Functions 时 Nodemailer 查询 A EREFUSED localhost
Posted
技术标签:
【中文标题】使用 Firebase Cloud Functions 时 Nodemailer 查询 A EREFUSED localhost【英文标题】:Nodemailer queryA EREFUSED localhost when using Firebase Cloud Functions 【发布时间】:2020-04-08 00:12:02 【问题描述】:每当在 Firebase 数据库中创建新订单时,我都会尝试向管理员帐户发送电子邮件。我为此使用 Cloud Functions 和 Nodemailer,但出现以下错误:
错误:queryA EREFUSED localhost 在 QueryReqWrap.onresolve [as oncomplete] (dns.js:213:19)
这是代码:
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);
);
);
我不知道为什么错误显示 localhost 即使我已经输入 smtp.gmail.com
编辑:我添加了 transport.verify() 这就是结果
错误:queryA EREFUSED localhost 在 QueryReqWrap.onresolve [as oncomplete] (dns.js:213:19) errno: 'EREFUSED', 代码:'EDNS', 系统调用:'queryA', 主机名:'本地主机', 命令:'CONN'
【问题讨论】:
【参考方案1】:可以查看文档:https://nodemailer.com/usage/using-gmail/
gmail还有一个问题,但是关于这个问题,和我一样, 我收到了这个错误:
错误: 错误:queryA EREFUSED smtp.163.com 在 QueryReqWrap.onresolve [as oncomplete] (dns.js:199:19)
但是当我尝试使用 termux 在我的手机上运行相同的代码时,它可以工作,也许免费的 smtp 服务太糟糕了。
【讨论】:
【参考方案2】:已修复
我通过将传输器配置(更改服务名称)更改为:
let transporter = nodemailer.createTransport(
service: 'gmail',
port: 465,
secure: true,
auth:
user: 'myemail@gmail.com',
pass: 'mypass'
);
【讨论】:
以上是关于使用 Firebase Cloud Functions 时 Nodemailer 查询 A EREFUSED localhost的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Firebase Cloud Messaging 控制台的情况下向 Flutter/Firebase Cloud Messaging 上的特定设备发送通知 [重复]
使用 spark(免费)firebase 计划使用 Cloud Functions for Firebase 导出 excel
在 iOS 中为 Firebase 使用 Cloud Functions