现象说明
在做邮件自动发送时,出现以下问题:
在连接电脑开发调试时,邮件发送一直正常,断开调试一段时间内,邮件也能正常发送,但是过了一段时间后,发送出现异常,获取报错日志:
Exception in thread "main" com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.163.com, 564; timeout -1;
nested exception is:
java.net.UnknownHostException: smtp.163.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2053)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
at javax.mail.Service.connect(Service.java:364)
at javax.mail.Service.connect(Service.java:245)
at mail.JavaEmail.sendEmail(JavaEmail.java:72)
at mail.JavaEmail.main(JavaEmail.java:22)
Caused by: java.net.UnknownHostException: smtp.163.com
处理过程
网上报这个错的解决方法是:
1. telnet查看网络是否连通
2. mail.host的属性设置是否正确,有没有多余空格等
3. 配置文件中添加
mail.smtp.auth=true
mail.smtp.starttls.enable=false
4. 查看连接的网络是否为安全的办公室网络,连接到其他网络试试
问题分析
以上方法并不适用这次与遇到情况,由报错信息,可以确定是网络连接问题,通过排查后发现,手机wifi连接偏好设置的高级设置中,有“在休眠状态下保持WLAN网络连接”的选项,默认为“仅限充电时”,在连接电脑的时候会附带充电,因此网络一直连接,但断开一段时间后wifi连接就会断开,以至于连接smtp失败。
解决方法
进入wifi连接偏好设置的高级设置,将“在休眠状态下保持WLAN网络连接”改为“始终”即可。