Отправка Gmail с использованием nodemailer, но ошибка времени ожидания подключения - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь отправить gmail с помощью nodemailer. Вот мой код.

var transporter = nodemailer.createTransport({
        service: 'gmail',
        auth: {
            user: '<sender@gmail.com>',
            pass: '<password>'
        }
    });

    var mailOptions = {
        from: '<sender@gmail.com>',
        to: '<receiver@gmail.com>',
        subject: 'Sending Email using Node.js',
        text: 'That was easy!'
    };

    transporter.sendMail(mailOptions, function(error, info){
        if (error) {
            console.log(error);
        } else {
            console.log('Email sent: ' + info.response);
        }
    });

Но я всегда получал эту ошибку.

{ Error: Connection timeout
    at SMTPConnection._formatError (E:\Work\Web\GatherSense\gather-sense-backend\node_modules\nodemailer\lib\smtp-connection\index.js:771:19)
    at SMTPConnection._onError (E:\Work\Web\GatherSense\gather-sense-backend\node_modules\nodemailer\lib\smtp-connection\index.js:757:20)
    at Timeout._connectionTimeout.setTimeout (E:\Work\Web\GatherSense\gather-sense-backend\node_modules\nodemailer\lib\smtp-connection\index.js:229:22)
    at ontimeout (timers.js:436:11)
    at tryOnTimeout (timers.js:300:5)
    at listOnTimeout (timers.js:263:5)
    at Timer.processTimers (timers.js:223:10) code: 'ETIMEDOUT', command: 'CONN' }

Я потратил много времени и пытался разными способами, такими как обеспечение меньшего количества приложений и отключениемежсетевые экраны. Но всегда получаю одну и ту же ошибку. Пожалуйста, помогите мне и спасибо.

1 Ответ

0 голосов
/ 15 октября 2019
const nodemailer = require('nodemailer');
const smtpTransport = require('nodemailer-smtp-transport');
import config from '../config/environment';


const transporter = nodemailer.createTransport(smtpTransport({
    host: config.email_config.SMTP_HOST,
    port: config.email_config.SMTP_PORT,
    tls: {
        rejectUnauthorized: false
    },
    auth: {
        user: config.email_config.SMTP_AUTH_USER,
        pass: config.email_config.SMTP_AUTH_PASS
    }
}));

export function mail(emailObj) {
    return new Promise((resolve, reject) => {
        transporter.sendMail(emailObj)
            .then(success => {
                if (success) {
                    console.log("Email success:::", success);
                    resolve();
                } else {
                    resolve(null);
                }
            }).catch(err => {
                console.log("Email Error:::", err);
                reject(err)
            })
    })
}
...