我试图发送电子邮件到管理员帐户时,有一个新的订单在Firebase数据库中创建。我正在使用Cloud Functions和Nodemailer,但我得到了以下错误:
错误:queryA EREFUSED localhost at 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: '[email protected]',
pass: 'mypass'
}
});
exports.sendMail = functions.database.ref('/Order/{orderId}').onCreate((snapshot, context) =>{
const dest = '[email protected]';
const mailOptions = {
from: 'Risal Fajar <[email protected]>',
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
编辑:我添加了TranSmart.verify(),这是结果
{ Error:queryA EREFUSED localhost at QueryReqWrap.onresolve [as oncomplete](dns.js:213:19)errno:'EREFUSED',代码:“EDNS”,系统调用:'queryA',主机名:'localhost',命令:'CONN' }
4条答案
按热度按时间kyxcudwk1#
修好了
我通过将传输器配置(更改服务名称)更改为:
icnyk63a2#
你可以看到文档:https://nodemailer.com/usage/using-gmail/
Gmail有另一个问题,但关于这个问题,我一样,我得到了这个错误:
错误:{错误:在smtp.163.comQueryReqWrap.onresolve [as oncomplete](dns.js:199:19)上查询www.example.com
但是当我试着用termux在我的移动的上运行同样的代码时,它工作了,也许免费的smtp服务太糟糕了。
hxzsmxv23#
如果接受的答案对你不起作用,你也可以尝试检查你的DNS配置,并确保主机名上的nslookup工作正常。
运行时间:
如果这导致错误,请转到您的网络参数并将当前DNS更改为8.8.8.8,如果错误仍然存在,请重试。.或者直接运行:
此外,如果错误仅发生在您的Cloud/ Docker容器或VM中,请确保名称服务器配置正确。
注意:我有这个错误,因为工作wifi的主要DNS没有解决'smtp.office3.com',但次要的,似乎nodemailer没有适当的过程来解决主机名使用次要DNS或进入操作系统主机。你可以在这里阅读更多关于如何修复Nodemailer faq中的错误。
brqmpdu14#
如果你使用的是旧版本的nodemailer,也许你需要更新到新版本。
使用你需要的依赖管理器(npm,yarn等)
在这里,您可以阅读有关此错误nodemailer issue的更多信息