Nodemailer查询使用Firebase Cloud Functions时已拒绝的本地主机

时间:2019-12-15 04:31:09

标签: node.js firebase google-cloud-functions nodemailer

每当在Firebase数据库中创建一个新订单时,我都尝试向管理员帐户发送电子邮件。我为此使用Cloud Functions和Nodemailer,但出现以下错误:

  

错误:queryA EREFUSED localhost       在QueryReqWrap.onresolve [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);
    });
});

即使输入了 smtp.gmail.com

,我也不知道为什么错误显示 localhost

编辑:我添加了transport.verify(),这就是结果

  

{错误:queryA EREFUSED localhost       在QueryReqWrap.onresolve上[作为oncomplete](dns.js:213:19)     errno:“ EREFUSED”,     代码:“ EDNS”,     syscall:“ queryA”,     主机名:“ localhost”,     命令:“ CONN”}

2 个答案:

答案 0 :(得分:1)

您可以看到文档:https://nodemailer.com/usage/using-gmail/

gmail还有另一个问题,但是关于这个问题,与我一样, 我收到此错误:

错误:{错误:queryA已拒绝smtp.163.com 在QueryReqWrap.onresolve上[作为oncomplete](dns.js:199:19)

但是当我尝试使用termux在我的手机上运行相同的代码时,它可以工作,也许免费的smtp服务是如此糟糕。

答案 1 :(得分:0)

已修复

我通过将运输机配置(更改服务名称)更改为:

@staticmethod