当前位置: 首页 > 知识库问答 >
问题:

Spring MVC邮件连接超时异常

宋俊艾
2023-03-14

我在eclipse IDE中使用Spring Mail尝试发送电子邮件,但控制台总是打印“连接超时”异常。我已经确认可以通过telnet连接到邮件服务器。我对Spring MVC框架相当陌生。可能是因为我没有配置spring mvc。xml对吗?不过,我没有在代码中使用依赖项注入。以下是代码和例外情况。感谢您的宝贵意见。

package xxx.web.controller;
import java.io.File; 
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.FileSystemResource; 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl; 
import org.springframework.mail.javamail.MimeMessageHelper;

@Controller
public class SendMailController {

 private JavaMailSenderImpl mailSender;

 @RequestMapping(value ="/sendMail", method = RequestMethod.GET) 
 public void sendMail(HttpServletRequest request) throws MessagingException{
  mailSender = new JavaMailSenderImpl();
  mailSender.setHost("smtp.sina.com");  //configure mail server
  mailSender.setUsername("**********@sina.com");
  mailSender.setPassword("*******");

  MimeMessage msg = mailSender.createMimeMessage();
  MimeMessageHelper msgHelper = new MimeMessageHelper(msg, true, "utf-8");

  msgHelper.setTo("********@qq.com");
  msgHelper.setFrom("*********@sina.com");
  msgHelper.setSubject("Testing Subject");
  msgHelper.setText("This is a test mail!");

  FileSystemResource file = new FileSystemResource(new File("D:/test.png"));
  msgHelper.addAttachment("test.png", file); //add an attachment

  Properties prop = new Properties();
  prop.put("mail.smtp.auth", "true");
  prop.put("mail.smtp.timeout", "25000"); 
  mailSender.setJavaMailProperties(prop);
  mailSender.send(msg);

  System.out.println("Email sent successfully!");
 }
}

在控制台中打印的异常:

消息请求处理失败;嵌套的异常是org。springframework。邮政MailSendException:邮件服务器连接失败;嵌套的异常是com。太阳邮政util。MailConnectException:**

无法连接到主机,端口:smtp.sina.com,25;超时-1;

**

描述服务器遇到了一个内部错误,使其无法满足此请求。

例外

组织。springframework。网状物util。NestedServletException:请求处理失败;嵌套的异常是org。springframework。邮政MailSendException:邮件服务器连接失败;嵌套的异常是com。太阳邮政util。MailConnectException:无法连接到主机,端口:smtp。新浪。com,25岁;超时-1;嵌套的例外是:java。网ConnectException:连接超时:连接。失败消息:com。太阳邮政util。MailConnectException:无法连接到主机,端口:smtp。新浪。com,25岁;超时-1;嵌套的例外是:java。网连接异常:连接超时:连接;消息异常(1)为:失败消息1:com。太阳邮政util。MailConnectException:无法连接到主机,端口:smtp。新浪。com,25岁;超时-1;嵌套的例外是:java。网连接异常:连接超时:连接组织。springframework。网状物servlet。FrameworkServlet。processRequest(FrameworkServlet.java:948)org。springframework。网状物servlet。FrameworkServlet。doGet(FrameworkServlet.java:827)javax。servlet。http。HttpServlet。服务(HttpServlet.java:620)组织。springframework。网状物servlet。FrameworkServlet。服务(FrameworkServlet.java:812)javax。servlet。http。HttpServlet。服务(HttpServlet.java:727)org。阿帕奇。公猫websocket。服务器WsFilter。doFilter(WsFilter.java:52)org。springframework。网状物滤器字符编码过滤器。doFilterInternal(CharacterEncodingFilter.java:88)org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:107)

共有1个答案

邓卓
2023-03-14

首先,你必须确保你的连接正常;要进行检查,请打开命令行并执行以下命令:

telnet <yourservername> smtp

HELO <yourservername and then enter>

MAIL from: <mailaddr and then enter>

RCPT to: <mailaddr and then enter>
DATA
354 End data with <CR><LF>.<CR><LF>
From: <mailaddr and then enter>
To: <mailaddr and then enter>
Subject: test

This is test
.
250 2.0.0 Ok: queued as 4C67244003
QUIT  <and then enter>
221 2.0.0 Bye
Connection closed by foreign host.

如果一切正常,那么这是Spring的问题,或者您需要在邮件服务器上进行身份验证(或者更简单地说,您的邮件服务器不允许在其自身网络之外进行连接)

安杰洛

 类似资料:
  • 代码片段如下所示: 如果有人有决议,请帮忙?

  • 我遇到了一个问题,JAVA mail(JavaMail Version1.5.3)在发送电子邮件消息时抛出了一个未连接异常,而电子邮件确实被发送出去了。我从4周前就开始遇到这个问题了。该问题似乎主要与托管的exchange服务器有关。例外情况如下:

  • 一些背景: 我有一个使用3G或4G数据连接的Android应用程序。但它也连接到一个wifi热点,以便在热点设备和应用程序之间传输一些数据。 我想做的是:创建一个到这个wifi热点的套接字连接,并通过这个套接字发送/接收数据。 我添加了以下代码,以确保我们在创建套接字时使用wifi热点wifi(否则它有时最终会使用数据连接): 这似乎没问题。但是,我在尝试连接到远程服务器地址时发现问题。下面是我正

  • 我相对来说是android开发的新手。我正在开发一个android应用程序,向web服务器发送请求并解析JSON对象。在与服务器通信时,我经常收到< code > Java . net . socket time out exception:Connection timed out 异常。有时它会完美地工作,没有任何问题。我知道这个问题已经被问过很多次了。但仍然,我没有得到任何满意的解决这个问题的

  • 我有以下设置: 我正在尝试处理服务器关闭,用户出现连接超时异常的情况,这是我的日志记录: 完整日志记录:http://pastebin.com/gscCGb7x 有没有办法将其转化为改造失败的方法,这样我就可以在那里处理它? 提前感谢!

  • 问题内容: 我在代码中使用了RMI: 这些是4个.java文件。 接下来,我编译所有这些文件。然后创建一个using 。之后,我使用来在服务器端启动rmi注册表。然后,我开始使用服务器,最后使用客户端。 但是什么也没发生 客户端抛出的异常是 原因是什么,我该如何解决? 在客户端计算机上,这些是以下.class文件,在服务器端 问题答案: 错误消息说明了一切:您的连接超时。这意味着您的请求在某个(默