NodeMailer配置报错求助:Greeting未接收/连接拒绝/SSL版本错误
NodeMailer 配置报错解决方案
原配置代码
var transporter = nodemailer.createTransport({ name:"www.rolester.com", service:"smtp", port: 27017, auth: { user: "aladi09@rolester.com", pass: "alandiv09" } })
遇到的报错
- 初始配置报错:
Error: Greeting never received - 改为587端口后报错:
Error: connect ECONNREFUSED 127.0.0.1:587 - 添加
secure: true后报错:[Error: 68390000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:355:]
解决方案
1. 先修正端口错误
27017是MongoDB的默认端口,和SMTP服务完全无关,直接换成主流SMTP端口:
- 587(推荐,采用STARTTLS加密)
- 465(SSL加密)
- 25(非加密,多数服务商已禁用)
2. 解决连接被拒绝问题
出现ECONNREFUSED是因为你用了service:"smtp",但NodeMailer无法识别这个“通用SMTP”服务,默认会尝试连接本地127.0.0.1的SMTP服务器,自然被拒绝。调整方式:
- 删除
service字段,直接指定你的域名邮箱SMTP服务器地址(比如smtp.rolester.com,具体地址去你邮箱服务商后台查询) - 示例配置:
var transporter = nodemailer.createTransport({ name:"www.rolester.com", host: "smtp.rolester.com", // 替换成你的域名邮箱SMTP主机地址 port: 587, secure: false, // 587端口用STARTTLS,secure必须设为false,后续会自动升级加密 auth: { user: "aladi09@rolester.com", pass: "alandiv09" } })
3. 修复SSL版本错误
587端口不支持直接SSL连接,强行添加secure: true必然报错。如果想用SSL加密,换成465端口,同时把secure设为true:
var transporter = nodemailer.createTransport({ name:"www.rolester.com", host: "smtp.rolester.com", port: 465, secure: true, auth: { user: "aladi09@rolester.com", pass: "alandiv09" } })
额外必查项
- 确认邮箱密码正确,部分服务商要求用应用专用密码(开启2FA的情况下,不能使用登录密码)
- 检查服务器/本地防火墙是否放行587/465端口,本地开发注意杀毒软件的拦截
- 核对SMTP主机地址,别自行猜测,直接去你的域名邮箱管理后台查看官方配置
内容的提问来源于stack exchange,提问作者alaa
相关产品推荐
相关产品推荐

