稍微懂点 Java 的同学应该都知道,使用 Java 发邮件应该是很简单的嘛,网上代码也多的是,随便 copy 一个不就搞定了嘛!我就是这么想的,然而,后果很严重……
直接说说结果吧,在我执行了很多次都依旧不成功的前提下,我已经翻遍了百度前几页的文章还是没能找到答案。最终却是一个思维的转变解决了问题。
报错都是这样的,很无奈,一直提示连不上服务器。
常规的解决方案有这几个
1、邮件服务器的 smtp / pop3 服务没有打开。
2、登陆账号和密码为账号和客户端授权密码。
3、设置认证并开启 SSL 加密。
4、可能 JDK 的版本过高,安全验证不通过。
5、163,QQ 邮箱服务器本身频率和次数有限制。
6、执行成功了,在垃圾箱中。
然而,这些我都已经验证没问题了,还是依旧
是不是很崩溃,这时候都快怀疑人生了,其实主要的原因就是在我所处的网络环境。虽然我可以正常的访问百度网易等常规网站,但是网络还是有限制的,这个限制就导致我这个功能一直测试不通过。
就这个功能而言,也有很多同学说,为什么我代码一直都没有改过,前几天还能发,怎么今天就不行了?
原因就在于我们总是把目光定在代码上,就像我这次,就盯着代码看,怎么也找不出 bug ,而实际上只是我处在的网络有问题。
从公司的网络环境出来,使用自己手机数据,或是回到家中,使用局域网重新测试果然好了。
所以,如何刚好有同学遇到这个问题,那就注意看看吧,不一定是你的代码有问题,很可能就是网络的问题,下次遇到这种网络编程相关的问题,都需要考虑自己所处的网络环境。
以后不能死板的只知道看代码了呀,代码写的再好,网络不对也是白搭!
后记:我在家中的局域网中就这样不停的测试,然后发现还是会出 bug ,具体体现在单位时间内发送的次数过多,可能一分钟 10 + 吧,然后就 ping 不通 smtp 服务器了。
过了几分钟又测,又好了。我也咨询了 163 的客服,被告知没有限制 IP,然而实际情况告诉我,还是有限制的,也请大家悉知。
领取专属 10元无门槛券
私享最新 技术干货