发送邮件时候遇到了这样的一个错误!Sending the email to the following server failed : smtp.163.com:25

org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.163.com:25
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1189)
at org.apache.commons.mail.Email.send(Email.java:1214)
at com.zsb.util.SendEmailUtil.getSendEmail(SendEmailUtil.java:31)
at com.zsb.action.ActivateMailAction.registerPwd(ActivateMailAction.java:76)
at com.zsb.action.ActivateMailAction.doPost(ActivateMailAction.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.mail.MessagingException: Exception reading response;
  nested exception is:
java.net.SocketTimeoutException: Read timed out
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2210)
at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:2078)
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2111)
at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1900)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1122)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1179)
... 26 more
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:110)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:89)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2188)

... 33 more



其实这个错误很简单,因为有三种可能,

1.是端口写错了,但是我的端口 没有写错sendemail.setHostName("smtp.163.com");

2是没有开通验证,但是我上个星期已经开通过了,而且用 的时候也很顺利。这个也没有问题

3.就是密码错了,果然。我登录163邮箱查看的时候,那个发送邮箱的授权密码已经过期了!改过来就没事了

### SMTP Gmail 连接端口 587 的 EOF 错误解决方案 当通过 SMTP 使用 Gmail 发送邮件时,如果遇到 `EOF` 错误,通常表明客户端与服务器之间的通信中断或未按预期完成握手过程。以下是可能的原因以及对应的解决方法: #### 可能原因及解决办法 1. **TLS 握手失败** 如果客户端未能成功执行 TLS 协议握手,则可能导致连接被终止并引发 `EOF` 错误。确保在建立连接时启用 STARTTLS 命令以升级到安全加密通道[^2]。 下面是一个 Python 脚本示例,展示如何正确配置 SMTP 客户端来使用 Gmail 的服务: ```python import smtplib from email.mime.text import MIMEText sender_email = "your-email@gmail.com" receiver_email = "receiver@example.com" password = input("Enter your Gmail account password: ") message = MIMEText("This is a test email sent via Python.") message['Subject'] = 'Test Email' message['From'] = sender_email message['To'] = receiver_email try: server = smtplib.SMTP('smtp.gmail.com', 587) server.starttls() # Upgrade the connection to secure mode. server.login(sender_email, password) server.sendmail(sender_email, [receiver_email], message.as_string()) print("Email has been successfully sent!") except Exception as e: print(f"An error occurred while sending the email: {e}") finally: server.quit() ``` 2. **网络问题** 不稳定的互联网连接可能会导致数据包丢失或者延迟过高,从而触发超时错误。建议检查当前设备的网络状况,并尝试切换至更可靠的 Wi-Fi 或有线连接环境[^3]。 3. **Gmail 设置限制** Google 对于第三方应用访问其邮箱施加了一定的安全措施。如果启用了两步验证功能而没有创建相应的 App Passwords(应用程序密码),则即使提供了正确的账户凭证也可能无法登录。前往 https://myaccount.google.com/apppasswords 页面生成专属的应用程序密码替代原始主密码输入[^4]。 4. **防火墙拦截** 部分企业级路由器或个人电脑上的软件防火墙会阻止对外部特定端口号的数据流传输行为。确认本地系统及其所在局域网内的任何防护机制均允许针对目标主机 smtp.gmail.com 和指定端口 587 的流量通行无阻[^5]。 --- #### 总结说明 上述列举了几种常见造成 SMTP Gmail Port 587 上发生 EOF Error 的情形连同各自的应对策略。实际操作过程中需逐一排查直至找到确切诱因再采取相应行动加以修正即可恢复正常运作状态。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值