Nodemailer: ECONNREFUSED

Я не знаю, что мне не хватает, я использую пример Nodemailer:

var nodemailer = require("nodemailer");

// create reusable transport method (opens pool of SMTP connections)
var smtpTransport = nodemailer.createTransport("SMTP",{
    service: "Gmail",
    auth: {
        user: "[email protected]",
        pass: "userpass"
    }
});

// setup e-mail data with unicode symbols
var mailOptions = {
    from: "Fred Foo ✔ <[email protected]>", // sender address
    to: "[email protected], [email protected]", // list of receivers
    subject: "Hello ✔", // Subject line
    text: "Hello world ✔", // plaintext body
    html: "<b>Hello world ✔</b>" // html body
}

// send mail with defined transport object
smtpTransport.sendMail(mailOptions, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    // if you don't want to use this transport object anymore, uncomment following line
    //smtpTransport.close(); // shut down the connection pool, no more messages
});

Я только что изменил пользователя и передал auth в мою учетную запись gmail (также пытался с их значениями), и я изменил адрес электронной почты "на" на мой адрес электронной почты. Я получаю:

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }

Что мне не хватает? Я ничего не вижу в документации, в которой говорится, что мне нужно сделать что-то большее, чем это, поэтому почему это не сработает? Заранее благодарю вас.

Ответ 1

Это проблема с брандмауэром. Оказывается, в коде не было ничего плохого, я просто не понял, что подразумевало сообщение об ошибке.

Ответ 2

Следующий шаг:

Надеемся, что этот код кода поможет вам.

Ответ 3

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

https://support.google.com/mail/answer/1173270?hl=en

Ответ 4

ECONNREFUSED указывает, что это какая-то проблема подключения или брандмауэра.

Можете ли вы подключиться к порту 465 smtp.gmail.com с любым другим приложением с того же компьютера, например с помощью openssl?

openssl s_client -connect smtp.gmail.com:465

Ответ 6

В моем случае мне просто пришлось отключить антивирус Avast.

Чтобы белый список на avast сделать это:

Эти шаги могут различаться в зависимости от версии Avast, включая IP-адрес, используемый здесь.

1) Откройте Avast, перейдите: Меню → Настройки. (Он расположен в правом верхнем углу)

2) Перейдите на вкладку "Общие" → "Исключения" → "Добавить исключение"

enter image description here

3) Получить IP-адрес вашего Gmail, я думаю, это будет с ошибкой. enter image description here

4) Теперь вставьте IP на ваше исключение enter image description here

Надеюсь, поможет.

Ответ 7

Фактическая проблема заключается в том, что вам нужно разместить СЕРВИС. Лучше, если вы используете переменные среды

            var transporter = nodemailer.createTransport({
                service: process.env.EMAIL_SERVICE,
                auth: {
                    user:process.env.EMAIL_USER,
                    pass:process.env.EMAIL_PASSWORD
                }
            })