使用Firebase Cloud Functions时的Nodemailer queryA EREFUSED localhost

sqxo8psd  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(111)

我试图发送电子邮件到管理员帐户时,有一个新的订单在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' }

kyxcudwk

kyxcudwk1#

修好了
我通过将传输器配置(更改服务名称)更改为:

let transporter = nodemailer.createTransport({
    service: 'gmail',
    port: 465,
    secure: true,
    auth: {
        user: '[email protected]',
        pass: 'mypass'
    }
});
icnyk63a

icnyk63a2#

你可以看到文档:https://nodemailer.com/usage/using-gmail/
Gmail有另一个问题,但关于这个问题,我一样,我得到了这个错误:
错误:{错误:在smtp.163.comQueryReqWrap.onresolve [as oncomplete](dns.js:199:19)上查询www.example.com
但是当我试着用termux在我的移动的上运行同样的代码时,它工作了,也许免费的smtp服务太糟糕了。

hxzsmxv2

hxzsmxv23#

如果接受的答案对你不起作用,你也可以尝试检查你的DNS配置,并确保主机名上的nslookup工作正常。
运行时间:

nslookup 'hostname'

如果这导致错误,请转到您的网络参数并将当前DNS更改为8.8.8.8,如果错误仍然存在,请重试。.或者直接运行:

nslookup 'hostname' 8.8.8.8

此外,如果错误仅发生在您的Cloud/ Docker容器或VM中,请确保名称服务器配置正确。
注意:我有这个错误,因为工作wifi的主要DNS没有解决'smtp.office3.com',但次要的,似乎nodemailer没有适当的过程来解决主机名使用次要DNS或进入操作系统主机。你可以在这里阅读更多关于如何修复Nodemailer faq中的错误。

brqmpdu1

brqmpdu14#

如果你使用的是旧版本的nodemailer,也许你需要更新到新版本。

{
    "code": "EDNS",
    "syscall": "queryA",
    "hostname": "smtp.gmail.com",
    "command": "CONN"
}

使用你需要的依赖管理器(npm,yarn等)

npm update nodemailer

在这里,您可以阅读有关此错误nodemailer issue的更多信息

相关问题