подключить ECONNREFUSED 127.0.0.1:587 (nodemailer + mailtrap)

Я пытался получить базовую комбинацию nodemailer, используя учетную запись mailtrap.io для работы, и вычеркивал.

Вот мой app.js:

const nodemailer = require('nodemailer');

let transport = nodemailer.createTransport({
    host: "smtp.mailtrap.io",
    port: 2525,
    // secure: true,
    auth: {
        user: "myusername",
        pass: "mypassword"
    },
    debug: true,
    logger: true
});

let scrapeEmailMessage = {
    //from: '[email protected]',
    to: '[email protected]',
    subject: 'Hello World',
    text: 'hello world'
};

let mailTransporter = nodemailer.createTransport(transport);

mailTransporter.sendMail(scrapeEmailMessage, function(err, data) {
    if(err) {
        console.log(err);
    } else {
        console.log('Email sent successfully');
    }
});

И вот вывод ошибки, который я получаю:

[2020-11-10 14:32:20] DEBUG Creating transport: nodemailer (6.4.15; +https://nodemailer.com/; SMTP/6.4.15[client:6.4.15])
[2020-11-10 14:32:20] DEBUG Creating transport: nodemailer (6.4.15; +https://nodemailer.com/; SMTP/6.4.15[client:6.4.15])
[2020-11-10 14:32:20] DEBUG Sending mail using SMTP/6.4.15[client:6.4.15]
[2020-11-10 14:32:20] DEBUG [YlvPyvxQxE] Resolved localhost as 127.0.0.1 [cache miss]
[2020-11-10 14:32:22] ERROR [YlvPyvxQxE] connect ECONNREFUSED 127.0.0.1:587
[2020-11-10 14:32:22] DEBUG [YlvPyvxQxE] Closing connection to the server using "destroy"
[2020-11-10 14:32:22] ERROR Send Error: connect ECONNREFUSED 127.0.0.1:587
Error: connect ECONNREFUSED 127.0.0.1:587
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1129:14) {
  errno: 'ECONNREFUSED',
  code: 'ESOCKET',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 587,
  command: 'CONN'
}

Я пробовал несколько вещей, чтобы исправить это, и постоянно получаю одно и то же сообщение об ошибке:

  • Включите параметры менее безопасных приложений в Gmail и используйте приведенный выше код, чтобы вместо этого попытаться подключиться к smtp.gmail.com.
  • Ручное редактирование номеров портов в приведенном выше коде.
  • Включение и выключение безопасного режима в приведенном выше коде.
  • Добавление исключений брандмауэра Защитника Windows для портов 587, 465, а также пары других просто для развлечения, чтобы посмотреть, будут ли они работать.
  • Полное отключение брандмауэра Защитника Windows.
  • Запуск кода на других компьютерах в моей домашней сети.
  • Проверка netstat -an, чтобы увидеть, указаны ли в списке порты 587 или 465. Это не так, но этот порт открыт постоянно или только при необходимости? Может ли это быть проблемой?

У кого-нибудь есть идеи о том, что здесь может происходить? Я просто нормальный парень, использующий домашнее подключение к Интернету, чтобы написать небольшую программу, которая будет отправлять себе оповещения по электронной почте один раз в день. Может ли мой интернет-провайдер блокировать это или что-то в этом роде?

РЕДАКТИРОВАТЬ - Добавление пары новых вещей, которые я пробовал, но которые не сработали:

  • Транспортный вариант ignoreTLS: true / false (пробовал оба)
  • Транспортный параметр requireTLS: true / false (пробовал оба)

person thefonz37    schedule 10.11.2020    source источник
comment
Можно попробовать с опцией requireTLS: true на транспорте?   -  person Mike Gerard    schedule 10.11.2020
comment
@MikeGerard спасибо за ответ. Просто попробовал. Нет кубиков, такое же сообщение об ошибке.   -  person thefonz37    schedule 10.11.2020


Ответы (2)


Вы создаете два транспортера.

Вместо этого: let mailTransporter = nodemailer.createTransport(transport); и mailTransporter.sendMail()

Сделайте это: transport.sendMail()

person Mike Gerard    schedule 10.11.2020
comment
Святая моли, спасибо. У меня, должно быть, были плохие копии / макароны из нескольких источников, и я полностью пропустил это! - person thefonz37; 10.11.2020
comment
Вы можете установить этот ответ как принятый, чтобы закрыть тему;) - person Mike Gerard; 10.11.2020
comment
LOL У меня была такая же проблема. Я думаю, что это будет обычная проблема, потому что, если вы скопируете учетные данные вставки из ethermail.email, он создаст для вас транспортер - person wongz; 12.04.2021

изменить; let transport = nodemailer.createTransport ({

быть; let transport = {

и удалите закрывающие круглые скобки; }); быть };

person Sanabel    schedule 03.07.2021