Framework or design pattern for mailing all users of a webapp

Posted by Todd Owen on Stack Overflow See other posts from Stack Overflow or by Todd Owen
Published on 2010-05-26T04:17:13Z Indexed on 2010/05/26 4:21 UTC
Read the original article Hit count: 241

Filed under:
|
|
|

My app takes care of user registration (with the option to receive email announcements), and can easily handle the actual template-based rendering of email for a given user. JavaMail provides the mail transport layer. But how should I design the application layer between the business objects (e.g. User) and the mail transport?

The straightforward approach would be a simple, synchronous loop: iterate through the users, queue the emails, and be done with it. "Queue" might mean sending them straight to the MTA (mail server), or to an in-memory queue to be consumed by another thread.

However, I also plan to implement features like throttling the rate of emails, processing bounced emails (NDRs), and maintaining status across application restarts. My intuition is that a good design would decouple this from both the business layer and the mail transport layer as much as possible. I wondered if others had solved this problem before, but after much searching I haven't found any Java libraries which seem to fit this problem. Standalone mail apps such as James or list servers are too large in scope; packages like Spring's MailSender or Commons Email are too small in scope (being basically drop-in replacements for JavaMail). For other languages I haven't found anything appropriate either.

I'm curious about how other developers have gone about adding bulk mailing to their applications.

© Stack Overflow or respective owner

Related posts about java

Related posts about architecture