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

Posted

技术标签:

【中文标题】无法使用 Nodemailer 连接到 outlook.com SMTP【英文标题】:Not able to connect to outlook.com SMTP using Nodemailer 【发布时间】: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 命令优先'

我做错了吗?请帮忙。

【问题讨论】:

【参考方案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 作为第一个参数

以上是关于无法使用 Nodemailer 连接到 outlook.com SMTP的主要内容,如果未能解决你的问题,请参考以下文章

使用 Nodemailer 和 Webpack 时无法解析 dns 和 child_process

为啥我收到错误“无法生成令牌。使用 Nodemailer 时检查您的身份验证选项?

与 Firebase 函数一起使用时,Nodemailer 无法正常工作

无法使用php连接错误连接到mysql:无法连接到'localhost'(10061)上的MySQL服务器[重复]

带有 Gmail 服务的 Nodemailer 无法在 heroku 上运行

为啥即使使用 Colab Pro 帐户也无法连接到 GPU 后端?