-
1. Re: Sending Email from an EAR deployed application
keithnaas Mar 17, 2008 10:10 PM (in response to richard1)If all of the jars are in the EAR, it is 100% possible to do this from anywhere in your app.
Try the FaceletsRenderer component which states
Implementation of Renderer using Facelets Especially useful for sending email using Seam Mail@In FaceletsRenderer renderer; public void foo() { renderer.render("/some/location/email.xhtml"); }
-
2. Re: Sending Email from an EAR deployed application
przemjaskier Mar 18, 2008 10:20 AM (in response to richard1)
Additionally, we may have times when another event (MDB for example) hits and should trigger an outbound email send. How would we set things up so that this email could also be formatted using the .xhtml templates?AFAIK this cannot be achieved with Seam mail, because it tightly depends on view layer presence. You'll get
No application context active
etc. This is a huge limitation if you want to have general mailing services for batch processing notifications etc.Templating is great, but providing your own thin wrapper on the MAIL API is not a big deal really and brings no such limitations.
After few attempts I switched to Spring mail support which can be used without this limitation and supports Velocity and Freemarker templates.
-
3. Re: Sending Email from an EAR deployed application
richard1 Mar 19, 2008 4:42 AM (in response to richard1)Thanks for the explanation, Przemyslaw. That's rough. It strikes me that the only real need is so that the .xhtml file (passed as the only parameter to renderer.render()) can be located. Is that the case? If so, can a static (String) template be used instead?
Templated email is pretty important, but I always hate the idea of adding more framework code to replace existing framework code that almost works...
Any chance one of the Seam insiders can weigh in on this?
-
4. Re: Sending Email from an EAR deployed application
pmuir Mar 19, 2008 1:06 PM (in response to richard1)It should probably work - just make sure the mail exists inside a full Seam app which has a view layer. But in general I need to rewrite the the Renderer so that it can work without JSF being active as Przemyslaw says - yes, you would still need the JSF libraries present, but that would be all.
-
5. Re: Sending Email from an EAR deployed application
richard1 Mar 19, 2008 2:42 PM (in response to richard1)In this particular case, though, there are two WAR files and a number of other EJB JAR files in the EAR. I'm trying to find out how I can specify a particular WAR to reference for the email template... either when called from an MDB or when accessed through a different WAR.
If the latter case sounds odd, one of the scenarios that I'm dealing with involves a product with an administrative application built into one WAR, and a user-facing front-end built in a different WAR (different templates, security, pretty much everything, but the same model and some common SSBs). The user-facing application sends out a variety of confirmation emails, and I'm now having to add an email-resend functionality in to the administrative application. I'd prefer to do this without duplicating all of the email templates, even during the build process.
More specifically I'm trying to understand how the seam Renderer is accessing those templates, so I don't accidentally think I have a solution that
works
but is fragile and may break across deployments.Thanks again!
-
6. Re: Sending Email from an EAR deployed application
pmuir Mar 19, 2008 4:43 PM (in response to richard1)It loads the from the the ResourceLoader which essentially loads them from the classpath. Look at the Seam source code for exactly which classloaders it tries.