报错如下: { [Error: connect ECONNREFUSED] code: 'ECONNREFUSED’, errno: 'ECONNREFUSED’, syscall: ‘connect’ } 之前有伙伴发过这个问题(https://cnodejs.org/topic/543c756f91eadb0f73aa33f4#556294908f294e213d10b8d1),但是没有给出解决方案。。。。现在我也遇到了这个问题,希望大牛们帮忙~~~好给大家弄个解决方案出来。 1、这个问题无论是在什么网络环境下都会出现,并非是之前话题小伙伴评论说是网络环境问题,目前我测试过的连接互联网环境有:校园客户端、家庭宽带、云服务器、公网固定IP这四种情况下,报的错误是一样(如上贴出来的代码),所以断定不是因为网络环境。 2、还有伙伴说是因为SMTP协议等,这个我也测试过了,163和QQ和gmail的邮箱都试过(当然用的是对应的协议,并且测试的邮箱都打开了该协议),即使和github上给出的例子一模一样只改发件人邮箱,还是报错。所以断定不是因为协议的问题。
两个地方你可以尝试一下:
- port那里改成
secureConnection: true,
port: 465,
- from字段写成
from: 'xxxx <[email protected]>'
这种形式,我之前没写后面的尖括号的内容就报错了。
额,我是用阿里云邮箱发的 例子在这里 传送门
@luoyjx 噢,对了,你github上那个demo用的是0.3.43版本,最新版的我已经被折腾得够了,为了用上发邮件功能,果断跟你一样换成0.3.43版,终于是不报那个错误了,换成了这个错误: { [AuthError: Invalid login - 535 Error: authentication failed] name: 'AuthError’, data: '535 Error: authentication failed’, stage: ‘auth’ } 代码和你的是一模一样的,只改了对应部分的信息,我的账号和密码都去登过没错。
@jinceon 亲,我按你的代码手动敲进去,令人高兴的是,终于不报连接不上的错误了,还是不行,报错: { [Error: Invalid login] code: 'EAUTH’, response: '535 Error: authentication failed’, responseCode: 535 } 登录验证怎么会出错呢?用户名和密码是对的,smtp也开启了的。我网上搜这个错误,有些网友说用户名和密码需要base64编码,这个你觉得呢? 亲,方便加下Q帮忙解决下么~~~276710039
@jinceon @luoyjx @think2011 测试了100多遍,终于找到问题所在了~~~~ 测试中出现过的错误:535或者553或者550(反正就是5开头的错误) 原因:smtp服务器验证不通过,因为网易的邮箱有个授权限制(这个就是坑所在,鄙视一万年) 解决方案:不适用SSL的话,用25端口,密码要用授权码当密码(登录网易邮箱绑定手机就可以获取得到)。 PS:那个网易邮箱(A)的授权码需要绑定手机(AA)才可以获取,然而我发现了bug,获取授权码后用别的邮箱(B)绑定这个手机(AA),邮箱(A)就可以解绑刚才那个手机(AA),但是邮箱(A)授权码依然是有效的,算不算网易的bug呢? 最后,贴亲测100多次成功的代码: 无论如何,还是诚心谢谢三位的耐心解答,握个爪哈~