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

Attachment: smime.p7s
Description: S/MIME cryptographic signature



Reply via email to