gpt4 book ai didi

java - 用于向 webapp 的所有用户发送邮件的框架或设计模式

转载 作者:行者123 更新时间:2023-12-04 06:52:34 25 4
gpt4 key购买 nike

我的应用程序负责用户注册(可以选择接收电子邮件通知),并且可以轻松地为给定用户处理基于模板的实际电子邮件呈现。 JavaMail 提供邮件传输层。但是我应该如何设计业务对象(例如用户)和邮件传输之间的应用层?

直接的方法将是一个简单的同步循环:遍历用户,将电子邮件排队,然后完成。 “队列”可能意味着将它们直接发送到 MTA(邮件服务器),或发送到内存中的队列以供另一个线程使用。

但是,我还计划实现诸如限制电子邮件速率、处理退回的电子邮件 (NDR) 以及在应用程序重新启动时维护状态等功能。我的直觉是,一个好的设计会尽可能地将其与业务层和邮件传输层解耦。我想知道其他人以前是否解决过这个问题,但是经过大量搜索后,我没有找到任何似乎适合这个问题的 Java 库。独立的邮件应用程序,例如 James或列表服务器范围太大;像 Spring's MailSender 这样的包或 Commons Email范围太小(基本上是 JavaMail 的替代品)。对于其他语言,我也没有找到任何合适的东西。

我很好奇其他开发人员如何将批量邮件添加到他们的应用程序中。

最佳答案

我最满意的方法是为我的应用程序提供一个接口(interface)来“发送”邮件。实际上,此接口(interface)的实现只是将邮件排队到数据库中以供以后处理。从应用程序的角度来看,这个接口(interface)很快,因为它执行的实际工作很少。另外,正如您所提到的,持久性在服务器停机时间内仍然存在。

另一个线程从队列中读取数据,并将邮件发送到其配置的 throttle ,并在成功处理它们后标记队列中的消息(有效地将它们出列而不删除它们)。这既提供了已发送邮件的历史记录,也提供了邮件被退回时的引用等。我在成功发送 7 天后从队列中删除。

在将解决方案与邮件传输层分离方面……我已经将这种方法应用于自动化 Twitter 客户端,并发现它同样成功。

关于java - 用于向 webapp 的所有用户发送邮件的框架或设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2910026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com