Use XML for Content
Content management across multiple sets of user preferences and multiple kinds of content can be a real chore. Building up the contents of most kinds of email messages in Java is a bad idea: you’ll need to recompile for every change. To speed up the process, you can use XML to build the content, and define a set of XSL stylesheets to transform it into plain text or HTML based on the users’ preferences. This takes the content and formatting out of the code, and allows redesigns to be implemented by changing the XSL. The XML can be generated by the Java program (which might be the case if the XML input is customized on a per-user basis, such as with receipts or custom newsletters), or it can be generated externally. You can also swap out XSL stylesheets according to user preferences—for example, this would allow you to easily brand a service to particular clients by associating stylesheets with certain users and feeding the XML content through their customized stylesheet.
Here’s a brief example of how XSL can be easily integrated with JavaMail via JAXP and a JAXP-compatible XSLT transformer. I’ve omitted most of the surrounding code for clarity.
import javax.xml.transform.*; import javax.xml.transform.stream.*; . . . // Class support here. These can be cached. . . . TransformerFactory tFactory = javax.xml.transform.TransformerFactory.newInstance( ); . . . Transformer htmlTF = tFactory.newTransformer (new StreamSource("contentToHtml.xsl")); . . . Transformer textTF ...