使用Office365 SMTP发送电子邮件时出错(MEANjs脚手架)

12
我尝试使用Office365 SMTP通过Nodemailer(在MEANjs脚手架中)发送电子邮件,但是我遇到了以下错误:
[Error: 140735277183760:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:795:]

我正在使用以下的Nodemailer选项:

{ 
    host: 'smtp.office365.com',
    port: '587',
    auth: { user: 'xxxx', pass: 'xxxx' },
    secure: 'false',
    tls: { ciphers: 'SSLv3' }
}

删除tls字段不会有任何影响。我错过了什么?

4个回答

23

解决方案很简单。'secure'字段应该改成'secureConnection'。生成配置文件的MEANjs脚手架创建了带有'secure'字段的邮件发送选项。其余选项都是正确的。对于任何需要可工作的Office365 SMTP nodemailer选项块的人,下面的内容应该有效:

{ 
    host: 'smtp.office365.com',
    port: '587',
    auth: { user: 'xxxx', pass: 'xxxx' },
    secureConnection: false,
    tls: { ciphers: 'SSLv3' }
}

当我尝试使用您提供的选项时,它没有起作用并出现了超时错误。我不得不删除 secureConnection 选项才能让它正常工作。谢谢! - João Cerqueira
非常感谢!在我的情况下,它使用以下设置正常工作:"secure": false, "tls": { "ciphers": "SSLv3" } - rdenisi

18

我知道这已经过时了,但如果有人在2019年查找此内容,则可以添加service:"Outlook365"

这样就不需要指定连接选项了。

Node Mailer文档

let transporter = nodemailer.createTransport({
    service: "Outlook365",
    auth: {
      user: 'FROMUSER@office365.com',
      pass: 'FROMUSERPASS'
    },    
  })

  let info = transporter.sendMail({
    from: 'FROMUSER@office365.com',
    to: 'TOUSER@office365.com',
    subject: 'Test',
    text: 'hello world',
    html: '<h1>TEST</h1>'
  })

7

这个nodemailer文档https://nodemailer.com/2-0-0-beta/setup-smtp/确实说明了options.secure而不是options.secureConnection。它还在一个示例中建议,options.secure期望的是布尔值true或false,而不是字符串值'true''false'。对于我来说,从''中删除'false'是有效的。


2
我是stackoverflow的新手。我想知道为什么一个正确的答案会被踩。Simon H所做的只是在一些文本周围放置灰色框。当我的意图是帮助人们时,这样做很严厉。 - Julian Pinn

0
我的问题是用户名和密码拼写正确,但我在创建账户后没有登录。所以我使用了一个邮件程序(Thunderbird)登录了一次,然后不得不更改我的密码,然后我就可以通过Nodemailer访问了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接