在新的线程问题中使用spring发送电子邮件

Mar*_*rko 7 java email spring multithreading asynchronous

我正在开发的应用程序的功能之一是每次用户在我们的系统中注册他的发票时都会发送电子邮件.如果使用Spring框架,特别容易从Java app发送电子邮件.我使用Spring框架中的JavaMailSenderImplSimpleMailMessage,它运行正常.

但我需要在新线程中发送电子邮件,以便与SMTP服务器的通信不会减慢其余应用程序进程的速度.问题是我打电话的时候

MailSender.send()
Run Code Online (Sandbox Code Playgroud)

来自新线程的方法,不发送电子邮件消息,而不是在同一线程中发送时.我尝试使用spring的@Async注释,spring Executor和普通的旧java.lang.Thread,但它不起作用.

可以用spring在java中异步发送电子邮件吗?有人有类似的问题吗?如果需要,我可以发布一些代码示例.

TNX

Ral*_*lph 3

它应该有效。

您需要告诉 Spring 它应该通过以下方式关注您的@Async注释:

<task:annotation-driven />
Run Code Online (Sandbox Code Playgroud)

您需要注意一些限制:

  • 带注释的方法必须属于 spring bean
  • 带注释的方法的调用必须从不同的 Spring Bean 执行(如果您使用标准 Spring AOP)。