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

Jee*_*van 16 ssl outlook smtp node.js nodemailer

我正在创建这样的传输对象.

var transport = nodemailer.createTransport("SMTP", {
        host: "smtp-mail.outlook.com", // hostname
        secureConnection: false, // use SSL
        port: 587, // port for secure SMTP
        auth: {
            user: "user@outlook.com",
            pass: "password"
        }
    });
Run Code Online (Sandbox Code Playgroud)

当我尝试发送邮件时,这是我得到的错误.

[错误:139668100495168:错误:1408F10B:SSL例程:SSL3_GET_RECORD:错误的版本号:../ deps/openssl/openssl/ssl/s3_pkt.c:337:]

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

{[AuthError:无效登录 - 530 5.7.0必须先发出STARTTLS命令]名称:'AuthError',数据:'530 5.7.0必须先发出STARTTLS命令'}

难道我做错了什么?请帮忙.

小智 27

我遇到了同样的问题,直到我偶然发现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: "user@outlook.com",
        pass: "password"
    },
    tls: {
        ciphers:'SSLv3'
    }
});
Run Code Online (Sandbox Code Playgroud)

或者,对于hotmail/live/outlook,您可以简单地使用

var transport = nodemailer.createTransport("SMTP", {
    service: "hotmail",
    auth: {
        user: "user@outlook.com",
        pass: "password"
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 我想你忘了在你的`service:"hotmail"`例子中删除第一个参数"SMTP". (2认同)