首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js nodemailer错误-错误版本号/无效问候语

Node.js nodemailer错误-错误版本号/无效问候语
EN

Stack Overflow用户
提问于 2021-02-22 14:00:28
回答 5查看 19.7K关注 0票数 17

在我的node.js服务器上设置nodemailer有一个很大的问题。我在网上发现的每一件事都试过了,但都没有用。唯一容易设置的就是gmail服务。但不幸的是我不能用那个。

secure设置为true时,我得到一个错误版本代码的原因。

代码语言:javascript
复制
[Error: 22468:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332:
] {
  library: 'SSL routines',
  function: 'ssl3_get_record',
  reason: 'wrong version number',
  code: 'ESOCKET',
  command: 'CONN'
}

但是,当我试图将secure设置为false时,就会得到一个无效的问候语错误

代码语言:javascript
复制
Error: Invalid greeting. response=* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2016 Double Precision, Inc.  See COPYING for distribution information.: * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2016 Double Precision, Inc.  See COPYING for distribution information.
    at SMTPConnection._actionGreeting (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:1189:27)
    at SMTPConnection._processResponse (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:932:20)
    at SMTPConnection._onData (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:739:14)
    at Socket.SMTPConnection._onSocketData (C:\Users\Motiondata\Documents\repos\rmn_app\server\rmn_server\node_modules\nodemailer\lib\smtp-connection\index.js:189:44)
    at Socket.emit (events.js:315:20)
    at addChunk (_stream_readable.js:309:12)
    at readableAddChunk (_stream_readable.js:284:9)
    at Socket.Readable.push (_stream_readable.js:223:10)
    at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
  code: 'EPROTOCOL',
  response: '* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2016 Double Precision, Inc.  See COPYING for distribution information.',
  command: 'CONN'
}

我的代码如下:

代码语言:javascript
复制
const transporter = nodemailer.createTransport({
  host: process.env.MAIL_HOST, // mx.example.com
  port: process.env.MAIL_PORT, // 143
  secure: true,
  auth: {
    user: process.env.MAIL_ADDRESS,
    pass: process.env.MAIL_PWD
  }
})

我已经检查了上千次了,他们绝对不是问题所在。

希望有人能帮我。提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-02-22 14:34:22

提到这里提到的这个问题:https://github.com/andris9/Nodemailer/issues/165

查看这是否有帮助,添加tls.ciphers选项以使用SSLv3

代码语言:javascript
复制
const transport = nodemailer.createTransport({
    host: process.env.MAIL_HOST, // mx.example.com
    port: process.env.MAIL_PORT, // 143
    secureConnection: false, // TLS requires secureConnection to be false
    auth: {
        user: process.env.MAIL_ADDRESS,
        pass: process.env.MAIL_PWD
    },
    tls: {
        ciphers:'SSLv3'
    }
});

对于Outlook365,这应该是可行的:

代码语言:javascript
复制
service: "Outlook365",
auth: {
   user: '[YOUR_O365_EMAIL]',
   pass: '[YOUR_O365_PASSWORD]'
}, 

请参阅此处:https://stackoverflow.com/a/37725123/9360885

如果您使用的是HotMail,那么删除hostport,然后添加service: "hotmail"

票数 34
EN

Stack Overflow用户

发布于 2021-06-07 20:00:26

使用

secure: false, // true for 465, false for other ports

nodemailer文档中的示例:

代码语言:javascript
复制
let transporter = nodemailer.createTransport({
    host: 'smtp.ethereal.email',
    port: 587,
    secure: false, // true for 465, false for other ports
    auth: {
        user: account.user, // generated ethereal user
        pass: account.pass  // generated ethereal password
    }
});

来源:检验员示例

票数 6
EN

Stack Overflow用户

发布于 2021-10-19 14:38:38

我在Gmail中使用了端口465,这起作用了。得到了“错误的版本号”错误与587。下面的示例用于云函数中的GCP服务帐户。

代码语言:javascript
复制
  const transporter = nodemailer.createTransport({
    host: "smtp.gmail.com",
    port: 465,
    secure: true,
    auth: {
      type: "OAuth2",
      user: process.env.GMAIL_ADDRESS,
      serviceClient: process.env.CLIENT_ID,
      privateKey: process.env.PRIVATE_KEY.replace(/\\n/g, "\n"),
    },
  });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66317125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档