【发布时间】:2015-10-01 14:11:09
【问题描述】:
我正在尝试使用 spring 发送一封简单的邮件。
这是我在 java 配置中的邮件发件人 bean 定义。
@Bean
public JavaMailSender javaMailService() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setSession(getMailSession());
return mailSender;
}
public Session getMailSession() {
JndiTemplate template = new JndiTemplate();
Session session = null;
try {
session = (Session) template.lookup("java:jboss/mail/Default");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return session;
}
我正在运行的是 jboss wildfly,bean 的创建没有任何问题。
这是我发送电子邮件的代码。
@Autowired
private JavaMailSender mailSender;
@Override
public void sendMail(String mailTo, String subject, String content) throws MessagingException{
MimeMessage message = mailSender.createMimeMessage();
message.setSubject(subject);
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailTo,false));
mailSender.send(message);
}
JavaMailSender 被正确注入。当我调试执行时,直到mailsender.send() 方法。它开始挂起。
看来jboss中的所有配置都是正确的。我还尝试在它自己的 bean 中指定邮件服务器参数。但它仍然无法正常工作。
我在这里做错了什么?
【问题讨论】:
-
您的邮件会话是否在 JBoss 中正确配置? SMTP 服务器是否已启动并正在运行,您是否可以从 JBoss 实际连接到服务器。对我来说,这似乎是一个邮件会话配置问题。
-
我正在使用 gmail smtp。我可以远程登录并连接到它。这就是我使用的:telent smtp.gmail.com 465
-
这是我的 jboss 配置:
-
挂起10分钟后抛出异常:原因:org.springframework.mail.MailSendException:邮件服务器连接失败;嵌套异常是 javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:465,响应:-1。失败的消息:javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:465
-
期望清楚地表明 smtp 拒绝端口的连接。我希望你应该在 587 端口测试它
标签: java spring jakarta-mail