无法使用 Nodemailer 连接到 outlook.com SMTP

问题描述 投票:0回答:8

我正在创建这样的运输对象。

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:版本错误 号码:../deps/openssl/openssl/ssl/s3_pkt.c:337:]

当我尝试将 ignoreTLS 设置为 true 时。这就是我得到的

{ [AuthError: Invalid login - 530 5.7.0 必须发出 STARTTLS 命令 first] name: 'AuthError', data: '530 5.7.0 必须发出 STARTTLS 先命令'}

我做错了什么吗?请帮助。

node.js ssl outlook smtp nodemailer
8个回答
47
投票

我遇到了同样的问题,直到我偶然发现https://github.com/andris9/Nodemailer/issues/165

尝试添加 tls 密码选项以使用 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"
    }
});

3
投票
let testAccount = await nodemailer.createTestAccount();
let transporter = nodemailer.createTransport({
  service: "Outlook365",
  host: "smtp.office365.com",
  port: "587",
  tls: {
    ciphers: "SSLv3",
    rejectUnauthorized: false,
  },
  auth: {
    user: "**********",
    pass: "*******",
  },
});
let info = await transporter.sendMail({
  from: "********", // sender address
  to: to, // list of receivers
  subject: subject, // Subject line
  html: html, // html body
});

You can use thing configuration for nodemailer with outlook account

0
投票

如果您使用的是 Nodemailer 1.x 或更高版本,您可以使用:

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

0
投票

基本上,

SSLv3
的错误,所以我有我的解决方案

let transporter = nodemailer.createTransport({
    host: 'smtp-mail.outlook.com',                  // hostname
    service: 'outlook',                             // service name
    secureConnection: false,
    tls: {
        ciphers: 'SSLv3'                            // tls version
    },
    port: 587,                                      // port
    auth: {
        user: "<Your Email>",
        pass: "<Password>"
    }
});

0
投票

如果您使用的是 v5+

const transporter = nodemailer.createTransport({
  host: "smtp-mail.outlook.com", 
  secureConnection: false, 
  port: 587, 
  service: "outlook",
  auth: {
    user: process.env.EMAIL_ID,
    pass: process.env.EMAIL_PASSWORD,
  },
  tls: {
    ciphers: "SSLv3",
  },
});

0
投票

它在 Nodemailer 版本 6.9.1 中对我有用,并且与打字稿没有任何问题

const transporter = nodemailer.createTransport({
host: "smtp-mail.outlook.com",
port: 587,
tls: {
    ciphers: "SSLv3",
    rejectUnauthorized: false,
},
auth: {
    user: "the  your username",
    pass: "the your pass",
},

});


0
投票

它在 Nodemailer 版本 6.9.1 中为我工作并且与打字稿没有任何问题
只需删除 `secureConnection: false`
并将 `rejectUnauthorized: false` 添加到 tls 对象
const transporter = nodemailer.createTransport({
host: "smtp-mail.outlook.com",
port: 587,
tls: {
    ciphers: "SSLv3",
    rejectUnauthorized: false,
},
auth: {
    user: "the  your username",
    pass: "the your pass",
},

});


-3
投票

tls:{ 密码:'SSLv3' } +1 工作

对于第一个 agr(“SMTP”,不支持更高版本。必须降级 nodemailler

© www.soinside.com 2019 - 2024. All rights reserved.