正在尝试使用smtp-relay.gmail.com和NodeEmailer发送电子邮件。错误ssl3\u获取\u记录:版本号错误

正在尝试使用smtp-relay.gmail.com和NodeEmailer发送电子邮件。错误ssl3\u获取\u记录:版本号错误,email,ssl,tls1.2,nodemailer,google-workspace,Email,Ssl,Tls1.2,Nodemailer,Google Workspace,尝试使用G套件smtp中继发送电子邮件使用Nodemailer const transporter = nodemailer.createTransport({ host: "smtp-relay.gmail.com", port: 587, secure: true, auth: { user: "username@mydomain.com", pass: "password" } }); const result = await transporter.

尝试使用G套件
smtp中继发送电子邮件
使用
Nodemailer

const transporter = nodemailer.createTransport({
  host: "smtp-relay.gmail.com",
  port: 587,
  secure: true,
  auth: {
    user: "username@mydomain.com",
    pass: "password"
  }
});

const result = await transporter.sendMail({
  from: `'"JOHN" <john@externaldomain.com>'`,
  to: "hello@mydomain.com",
  subject: "Hello",
  text: "Hello world!",
});
const transporter=nodeEmailer.createTransport({
主机:“smtprelay.gmail.com”,
港口:587,
安全:是的,
认证:{
用户:“username@mydomain.com",
通行证:“密码”
}
});
const result=wait transporter.sendMail({
发件人:“‘约翰’”`,
至:hello@mydomain.com",
主题:“你好”,
文字:“你好,世界!”,
});
这是G套件关于使用TLS的说明:

这是NodeEmailer所说的:

继续

基本上,G套件告诉我应该为TLS使用端口587,而NodeEmailer说我不应该

不知道这是否与端口有关,但这是我得到的错误:

注意:我正在尝试端口
587

{[错误:13252:错误:1408F10B:SSL例程:ssl3_获取_记录:错误的版本号:c:\ws\deps\openssl\openssl\SSL\record\ssl3_记录。c:332: ]代码:'ESOCKET',命令:'CONN'}

如果更改为端口
465
,则会出现以下错误:

'535-5.7.8不接受用户名和密码。有关详细信息,请访问\n535 5.7.8', 响应代码:535, 命令:'AUTH PLAIN'}

我知道我的用户和密码是正确的

我做错了什么

基本上,G套件告诉我应该为TLS使用端口587,而NodeEmailer说我不应该

两人谈论不同的事情。第一个(G套件)讨论SSL与TLS,即比较协议的各种版本。第二个(nodeEmailer)讨论显式与隐式TLS,即使用STARTTLS命令显式升级普通连接(端口25和587)或直接在TCP连接(端口465)后建立TLS


因此,按照NodeEmailer的建议设置
secure:false
。如果您想要强制使用TLS,即如果邮件服务器不支持STARTTLS,则失败,然后设置
requireTLS:true

,这确实有效!谢谢你的详细回答,Steffen。