On 19 Nov 2003, at 19:03, Tony Collen wrote:
Yep, this is the easy way. I could see this being the answer to some FAQ:
Q: How can I easily send an email from the Flow layer?
A: The simple way is to write an XSP, and call the XSP's pipeline from within the Flowscript. If you need something a little cleaner, you can simply write a helper class in Java and access it from your Flow as an object.
or:
The Flowscript:
importPackage (Packages.org.apache.cocoon.mail);
function sendMail (smtpHost, bodysrc, to, from, subject, bean) {
var mailer = new MailMessageSender (smtpHost);
mailer.setFrom (from);
mailer.setTo (to);
mailer.setSubject (subject);
// use a JXTemplate to produce the body from the 'bean'
var output = new Packages.java.io.ByteArrayOutputStream ();
cocoon.processPipelineTo (bodysrc, { bean: bean }, output);
mailer.setBody (output.toString ());
mailer.send (null); // a null resolver, because we do not need one
}NB. MailMessageSender can take a 'src' of a pipeline to call to get the email body, but it does not take a bean as a parameter. So I can do it like the above.
The template:
<document xmlns:t="http://apache.org/cocoon/templates/jx/1.0"> To: #{bean/firstname} #{bean/lastname}.
You have been successfully registered with our site.
http://the.url.here
Your login is: #{bean/email}
We hope you remember your password!
</document>The Pipeline:
<map:match pattern="mail/*">
<map:generate type="jx" src="content/mail/{1}.xml"/>
<map:serialize type="text"/>
</map:match>HTH
regards Jeremy
smime.p7s
Description: S/MIME cryptographic signature
