The renderer.render("template.xhtml") renders and sends an email message. Which is the best way to separate these two phases, for, e.g.:
I managed to override FaceletsRenderer.renderFacelet to get access to the rendered MimeMessage. But this doesn't help with the first problem (debug mode) and I'm not sure if it is the best approach for the others.
You can install a different transport (that delegates to the SMTP transport) and intercept the message sending there. You can set the transport Seam should use using <mail:mail-session transport="myTransport" /> and register the transport with JavaMail.