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

时间:2013-10-22 05:03:24

标签: node.js ssl outlook 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: "user@outlook.com",
            pass: "password"
        }
    });

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

  

[错误: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   先命令'}

我做错了吗?请帮忙。

3 个答案:

答案 0 :(得分:25)

在我偶然发现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: "user@outlook.com",
        pass: "password"
    },
    tls: {
        ciphers:'SSLv3'
    }
});

或者,对于hotmail / live / outlook,您只需使用

即可
var transport = nodemailer.createTransport("SMTP", {
    service: "hotmail",
    auth: {
        user: "user@outlook.com",
        pass: "password"
    }
});

答案 1 :(得分:0)

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

var transporter = nodemailer.createTransport('smtp://username%40outlook.com:password@smtp-mail.outlook.com');

答案 2 :(得分:-3)

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

并且对于第一个agr(" SMTP",不支持更高版本。一个将不得不降级nodemailler