【问题标题】:Not able to connect to outlook.com SMTP using Nodemailer无法使用 Nodemailer 连接到 outlook.com SMTP
【发布时间】:2013-10-30 19:42:09
【问题描述】:

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

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: Invalid login - 530 5.7.0 必须发出 STARTTLS 命令 first] 名称:'AuthError',数据:'530 5.7.0 必须发出 STARTTLS 命令优先'}

我做错了吗?请帮忙。

【问题讨论】:

    标签: node.js ssl outlook smtp nodemailer


    【解决方案1】:

    基本上,来自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>"
        }
    });
    

    【讨论】:

      【解决方案2】:
      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
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

            我遇到了同样的问题,直到我偶然发现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'
                }
            });
            

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

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

            【讨论】:

            • 我认为您忘记删除 service:"hotmail" 示例中的第一个参数“SMTP”。
            • @michalstanko 的评论不再有效。您不再需要 SMTP 作为第一个参数
            猜你喜欢
            • 2015-12-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-25
            • 2014-05-01
            相关资源
            最近更新 更多