Не удалось подключиться к outlook.com SMTP с помощью Nodemailer

Я создаю объект транспорта следующим образом.

var transport = nodemailer.createTransport("SMTP", {
        host: "smtp-mail.outlook.com", // hostname
        secureConnection: false, // use SSL
        port: 587, // port for secure SMTP
        auth: {
            user: "[email protected]",
            pass: "password"
        }
    });

Это ошибка, которую я получаю, когда пытаюсь отправить почту.

[Ошибка: 139668100495168: ошибка: 1408F10B: SSL подпрограммы: SSL3_GET_RECORD: неправильная версия number:../deps/openssl/openssl/ssl/s3_pkt.c: 337:]

Когда я попытался установить ignoreTLS как true. Это то, что я получаю

{[AuthError: Неверный вход - 530 5.7.0 Должен выдавать команду STARTTLS first] name: 'AuthError', data: '530 5.7.0 Должен выдавать STARTTLS сначала команда "}

Я что-то делаю неправильно? Пожалуйста, помогите.

Ответ 1

У меня была такая же проблема, пока я не наткнулся на https://github.com/andris9/Nodemailer/issues/165

Попробуйте добавить параметр tls cipher для использования SSLv3.

var transport = nodemailer.createTransport("SMTP", {
    host: "smtp-mail.outlook.com", // hostname
    secureConnection: false, // TLS requires secureConnection to be false
    port: 587, // port for secure SMTP
    auth: {
        user: "[email protected]",
        pass: "password"
    },
    tls: {
        ciphers:'SSLv3'
    }
});

В качестве альтернативы, для hotmail/live/outlook вы можете просто использовать

var transport = nodemailer.createTransport("SMTP", {
    service: "hotmail",
    auth: {
        user: "[email protected]",
        pass: "password"
    }
});

Ответ 2

Если вы используете Nodemailer 1.x или более, вы можете использовать:

var transporter = nodemailer.createTransport('smtp://username%40outlook.com:[email protected]');

Ответ 3

tls: {       шифры: 'SSLv3'   } +1 работает

и для первого agr ( "SMTP", не поддерживает более позднюю версию, нужно будет отказаться от nodemailler