这是我的场景:
- 使用邮件构造所需的一堆参数调用一些电子邮件发送 bean。
- 它创建 MultiPartEmail 并将其排队等待发送,这是由后台的单独线程完成的,调用者不在乎它是否已发送。
- 传递线程拿起排队的电子邮件实例并执行 email.send() - 所以它就走了。
- 当投递失败时,bean 会每 5 分钟尝试重发邮件 3 次,然后放弃。
问题:
我不知道如何处理#4。我手头的是以前构造的 MultiPartEmail 实例,但未能发送。显然再次做 email.send() 会抛出这个:
java.lang.IllegalStateException: MimeMessage 已经构建。
有没有办法重置这种非法状态,以便可以重新使用消息。我真的没有办法从头开始创建新实例 - 调用者早已不复存在,如果无法使用已经构建的对象,它会使整个机制变得非常丑陋。我想我在这里遗漏了一些非常简单的东西..