001 package hirondelle.web4j.webmaster; 002 003 import java.util.*; 004 005 import hirondelle.web4j.model.AppException; 006 import hirondelle.web4j.util.WebUtil; 007 008 /** 009 Send a simple email from the webmaster to a list of receivers. 010 011 <P>See {@link hirondelle.web4j.BuildImpl} for important information on how this item is configured. 012 {@link hirondelle.web4j.BuildImpl#forEmailer()} 013 returns the configured implementation of this interface. 014 015 <P>Implementations of this interface will be called by the framework when it needs 016 to send an email. For example, {@link TroubleTicket} uses such an implementation to 017 send diagnostic information to the webmaster. The from-address is taken from the 018 webmaster email configured in <tt>web.xml</tt>. 019 020 <P><b>Sending Email on a Separate Thread</b><br> 021 Some implementations might send emails on a separate worker thread. 022 However, such implementations can be tricky. If your application creates a thread on its own, then 023 the Servlet Container will likely not be able to shut down in the regular way. The thread 024 will be unknown to the Container, and will likely prevent it from shutting down. 025 026 <P>The {@link EmailerImpl} default implementation of this interface doesn't use a 027 separate worker thread. See <tt>web.xml</tt> in the example applications for more details. 028 */ 029 public interface Emailer { 030 031 /** 032 Send an email from the webmaster to a list of receivers. 033 034 @param aToAddresses contains email addresses of the receivers, as a List of Strings that satisfy 035 {@link WebUtil#isValidEmailAddress(String)} 036 @param aSubject satisfies {@link hirondelle.web4j.util.Util#textHasContent} 037 @param aBody satisfies {@link hirondelle.web4j.util.Util#textHasContent} 038 */ 039 void sendFromWebmaster(List<String> aToAddresses, String aSubject, String aBody) throws AppException; 040 041 }