You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ba...@apache.org on 2001/04/03 23:09:29 UTC
cvs commit: xml-cocoon/src/org/apache/cocoon/processor/xsp/library/mail sendmail.xsl
balld 01/04/03 14:09:29
Modified: src/org/apache/cocoon/processor/xsp/library/mail
sendmail.xsl
Log:
patches from new functionality from Drasko Kokic
Revision Changes Path
1.7 +212 -225 xml-cocoon/src/org/apache/cocoon/processor/xsp/library/mail/sendmail.xsl
Index: sendmail.xsl
===================================================================
RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/processor/xsp/library/mail/sendmail.xsl,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- sendmail.xsl 2001/02/01 19:49:53 1.6
+++ sendmail.xsl 2001/04/03 21:09:29 1.7
@@ -1,225 +1,212 @@
-<?xml version="1.0"?>
-<!--
- ============================================================================
- The Apache Software License, Version 1.1
- ============================================================================
-
- Copyright (C) @year@ The Apache Software Foundation. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without modifica-
- tion, are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- 3. The end-user documentation included with the redistribution, if any, must
- include the following acknowledgment: "This product includes software
- developed by the Apache Software Foundation (http://www.apache.org/)."
- Alternately, this acknowledgment may appear in the software itself, if
- and wherever such third-party acknowledgments normally appear.
-
- 4. The names "Cocoon" and "Apache Software Foundation" must not be used to
- endorse or promote products derived from this software without prior
- written permission. For written permission, please contact
- apache@apache.org.
-
- 5. Products derived from this software may not be called "Apache", nor may
- "Apache" appear in their name, without prior written permission of the
- Apache Software Foundation.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- This software consists of voluntary contributions made by many individuals
- on behalf of the Apache Software Foundation and was originally created by
- Stefano Mazzocchi <st...@apache.org>. For more information on the Apache
- Software Foundation, please see <http://www.apache.org/>.
--->
-<!--
- <description>
- This is a stylesheet to send mail via the java mail API.
- </description>
-
- <author>Donald A. Ball Jr.</author>
- <version>1.0</version>
--->
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:xsp="http://www.apache.org/1999/XSP/Core"
- xmlns:sendmail="http://apache.org/cocoon/sendmail/v1"
- version="1.0"
->
-
-<xsl:param name="XSP-ENVIRONMENT"/>
-<xsl:param name="XSP-VERSION"/>
-<xsl:param name="filename"/>
-<xsl:param name="language"/>
-
-<xsl:variable name="cocoon1-environment">Cocoon 1</xsl:variable>
-<xsl:variable name="cocoon2-environment">Cocoon 2</xsl:variable>
-
-<xsl:variable name="cocoon1-xsp-namespace-uri">http://www.apache.org/1999/XSP/Core</xsl:variable>
-<xsl:variable name="cocoon2-xsp-namespace-uri">http://apache.org/xsp</xsl:variable>
-
-<xsl:variable name="environment">
- <xsl:choose>
- <xsl:when test="starts-with($XSP-ENVIRONMENT,$cocoon1-environment)">
- <xsl:text>cocoon1</xsl:text>
- </xsl:when>
- <xsl:when test="starts-with($XSP-ENVIRONMENT,$cocoon2-environment)">
- <xsl:text>cocoon2</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>cocoon2</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:variable>
-
-<xsl:variable name="xsp-namespace-uri">
- <xsl:choose>
- <xsl:when test="$environment = 'cocoon1'">
- <xsl:value-of select="$cocoon1-xsp-namespace-uri"/>
- </xsl:when>
- <xsl:when test="$environment = 'cocoon2'">
- <xsl:value-of select="$cocoon2-xsp-namespace-uri"/>
- </xsl:when>
- </xsl:choose>
-</xsl:variable>
-
-<xsl:template name="get-nested-content">
- <xsl:param name="content"/>
- <xsl:choose>
- <xsl:when test="$content/*">
- <xsl:apply-templates select="$content/*"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$content"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="get-nested-string">
- <xsl:param name="content"/>
- <xsl:choose>
- <xsl:when test="$environment = 'cocoon1'">
- <xsl:choose>
- <xsl:when test="$content/*">
- ""
- <xsl:for-each select="$content/node()">
- <xsl:choose>
- <xsl:when test="name(.)">
- + <xsl:apply-templates select="."/>
- </xsl:when>
- <xsl:otherwise>
- + "<xsl:value-of select="translate(.,'	 ',' ')"/>"
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- "<xsl:value-of select="normalize-space($content)"/>"
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$environment = 'cocoon2'">
- <xsl:choose>
- <xsl:when test="$content/*">
- ""
- <xsl:for-each select="$content/node()">
- <xsl:choose>
- <xsl:when test="name(.)">
- <xsl:choose>
- <xsl:when test="namespace-uri(.)='http://apache.org/xsp' and local-name(.)='text'">
- + "<xsl:value-of select="."/>"
- </xsl:when>
- <xsl:otherwise>
- + <xsl:apply-templates select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- + "<xsl:value-of select="translate(.,'	 ',' ')"/>"
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>"<xsl:value-of select="normalize-space($content)"/>"</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template match="xsp:page">
- <xsl:copy>
- <xsl:apply-templates select="@*"/>
- <xsp:structure>
- <xsp:include>javax.mail.Message</xsp:include>
- <xsp:include>javax.mail.Transport</xsp:include>
- <xsp:include>javax.mail.Session</xsp:include>
- <xsp:include>javax.mail.MessagingException</xsp:include>
- <xsp:include>javax.mail.internet.InternetAddress</xsp:include>
- <xsp:include>javax.mail.internet.MimeMessage</xsp:include>
- <xsp:include>javax.mail.internet.AddressException</xsp:include>
- <xsp:include>java.util.Date</xsp:include>
- <xsp:include>java.util.Properties</xsp:include>
- </xsp:structure>
- <xsp:logic>
- static Properties _sendmail_properties;
- static {
- _sendmail_properties = new Properties();
- _sendmail_properties.put("mail.smtp.host","127.0.0.1");
- }
- </xsp:logic>
- <xsl:apply-templates/>
- </xsl:copy>
-</xsl:template>
-
-<xsl:template match="sendmail:send-mail">
- <xsl:variable name="from"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:from"/></xsl:call-template></xsl:variable>
- <xsl:variable name="to"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:to"/></xsl:call-template></xsl:variable>
- <xsl:variable name="subject"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:subject"/></xsl:call-template></xsl:variable>
- <xsl:variable name="body"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:body"/></xsl:call-template></xsl:variable>
- <xsl:variable name="smtphost"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:smtphost"/></xsl:call-template></xsl:variable>
- <xsp:logic>
- try {
- Properties _sendmail_properties = new Properties(this._sendmail_properties);
- if (!"null".equals(String.valueOf(<xsl:copy-of select="$smtphost"/>))) {
- _sendmail_properties.put("mail.smtp.host",String.valueOf(<xsl:copy-of select="$smtphost"/>));
- }
- Session _sendmail_session = Session.getDefaultInstance(_sendmail_properties,null);
- Message _sendmail_message = new MimeMessage(_sendmail_session);
- InternetAddress _sendmail_from = new InternetAddress(String.valueOf(<xsl:copy-of select="$from"/>));
- _sendmail_message.setFrom(_sendmail_from);
- InternetAddress _sendmail_to = new InternetAddress(String.valueOf(<xsl:copy-of select="$to"/>));
- _sendmail_message.setRecipient(Message.RecipientType.TO,_sendmail_to);
- _sendmail_message.setSentDate(new Date());
- _sendmail_message.setSubject(String.valueOf(<xsl:copy-of select="$subject"/>));
- _sendmail_message.setText(String.valueOf(<xsl:copy-of select="$body"/>));
- Transport.send(_sendmail_message);
- } catch (AddressException _sendmail_exception) {
- <error type="user">Your email address is invalid.</error>
- } catch (MessagingException _sendmail_exception) {
- <error type="server">An error occured while sending email.</error>
- }
- </xsp:logic>
-</xsl:template>
-
-<xsl:template match="@*|node()" priority="-1">
- <xsl:copy>
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
-</xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?>
+<!--
+ ============================================================================
+ The Apache Software License, Version 1.1
+ ============================================================================
+
+ Copyright (C) 1999-2001 The Apache Software Foundation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modifica-
+ tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ 3. The end-user documentation included with the redistribution, if any, must
+ include the following acknowledgment: "This product includes software
+ developed by the Apache Software Foundation (http://www.apache.org/)."
+ Alternately, this acknowledgment may appear in the software itself, if
+ and wherever such third-party acknowledgments normally appear.
+
+ 4. The names "Cocoon" and "Apache Software Foundation" must not be used to
+ endorse or promote products derived from this software without prior
+ written permission. For written permission, please contact
+ apache@apache.org.
+
+ 5. Products derived from this software may not be called "Apache", nor may
+ "Apache" appear in their name, without prior written permission of the
+ Apache Software Foundation.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This software consists of voluntary contributions made by many individuals
+ on behalf of the Apache Software Foundation and was originally created by
+ Stefano Mazzocchi <st...@apache.org>. For more information on the Apache
+ Software Foundation, please see <http://www.apache.org/>.
+-->
+<!--
+ <description>
+ This is a stylesheet to send mail via the java mail API.
+ </description>
+
+ <author>Donald A. Ball Jr.</author>
+ <version>1.0</version>
+ <release version="1.1" author="Drasko Kokic"/>
+-->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xsp="http://www.apache.org/1999/XSP/Core"
+ xmlns:sendmail="http://apache.org/cocoon/sendmail/v1">
+
+ <xsl:template match="xsp:page">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsp:structure>
+ <xsp:include>javax.mail.Message</xsp:include>
+ <xsp:include>javax.mail.Transport</xsp:include>
+ <xsp:include>javax.mail.Session</xsp:include>
+ <xsp:include>javax.mail.MessagingException</xsp:include>
+ <xsp:include>javax.mail.internet.InternetAddress</xsp:include>
+ <xsp:include>javax.mail.internet.MimeMessage</xsp:include>
+ <xsp:include>javax.mail.internet.AddressException</xsp:include>
+ <xsp:include>java.util.Date</xsp:include>
+ <xsp:include>java.util.Properties</xsp:include>
+ </xsp:structure>
+ <xsp:logic>
+ static Properties _sendmail_properties;
+ static
+ {
+ _sendmail_properties = new Properties();
+ _sendmail_properties.put ("mail.smtp.host", "127.0.0.1");
+ }
+ </xsp:logic>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+
+ <xsl:template match="sendmail:send-mail">
+ <xsl:variable name="subject"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:subject"/></xsl:call-template></xsl:variable>
+ <xsl:variable name="body"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:body"/></xsl:call-template></xsl:variable>
+ <xsl:variable name="smtphost"><xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:smtphost"/></xsl:call-template></xsl:variable>
+ <xsp:logic>
+ try
+ {
+ Properties _sendmail_properties = new Properties (this._sendmail_properties);
+ if (!"null".equals (String.valueOf (<xsl:copy-of select="$smtphost"/>)))
+ {
+ _sendmail_properties.put ("mail.smtp.host", String.valueOf (<xsl:copy-of select="$smtphost"/>));
+ }
+ Session _sendmail_session = Session.getDefaultInstance (_sendmail_properties,null);
+ Message _sendmail_message = new MimeMessage (_sendmail_session);
+ _sendmail_message.setFrom (new InternetAddress (String.valueOf (<xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="sendmail:from"/></xsl:call-template>)));
+
+ <xsl:if test="sendmail:reply-to">
+ InternetAddress[] _sendmail_ias = new InternetAddress[<xsl:value-of select="count(sendmail:reply-to)"/>];
+ <xsl:for-each select="sendmail:reply-to">
+ _sendmail_ias[<xsl:value-of select="position()-1"/>] = new InternetAddress (String.valueOf (<xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="."/></xsl:call-template>));
+ </xsl:for-each>
+ _sendmail_message.setReplyTo (_sendmail_ias);
+ </xsl:if>
+
+ InternetAddress _sendmail_ia = null;
+ <xsl:for-each select="sendmail:to">
+ _sendmail_ia = new InternetAddress (String.valueOf (<xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="."/></xsl:call-template>));
+ _sendmail_message.addRecipient (Message.RecipientType.TO, _sendmail_ia);
+ </xsl:for-each>
+ <xsl:for-each select="sendmail:cc">
+ _sendmail_ia = new InternetAddress (String.valueOf (<xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="."/></xsl:call-template>));
+ _sendmail_message.addRecipient (Message.RecipientType.CC, _sendmail_ia);
+ </xsl:for-each>
+ <xsl:for-each select="sendmail:bcc">
+ _sendmail_ia = new InternetAddress (String.valueOf (<xsl:call-template name="get-nested-string"><xsl:with-param name="content" select="."/></xsl:call-template>));
+ _sendmail_message.addRecipient (Message.RecipientType.BCC, _sendmail_ia);
+ </xsl:for-each>
+
+ _sendmail_message.setSentDate (new Date());
+ _sendmail_message.setSubject (String.valueOf (<xsl:copy-of select="$subject"/>));
+ _sendmail_message.setText (String.valueOf (<xsl:copy-of select="$body"/>));
+
+ <xsl:apply-templates select="sendmail:debug"/>
+ Transport.send (_sendmail_message);
+ }
+ catch (AddressException _sendmail_e)
+ {
+ <sendmail:error type="user">
+ <xsp:attribute name="string"><xsp:expr>_sendmail_e.getRef()</xsp:expr></xsp:attribute>
+ <xsp:attribute name="position"><xsp:expr>_sendmail_e.getPos()</xsp:expr></xsp:attribute>
+ The email address is invalid.
+ </sendmail:error>
+ }
+ catch (MessagingException _sendmail_e)
+ {
+ <sendmail:error type="server">
+ <xsp:expr>_sendmail_e.getMessage()</xsp:expr>
+ </sendmail:error>
+ }
+ </xsp:logic>
+ </xsl:template>
+
+
+ <xsl:template match="sendmail:debug">
+ <sendmail:debug sendmail:version="1.1">
+ <xsp:logic>
+ InternetAddress[] _sendmail_addr = null;
+ _sendmail_addr = (InternetAddress[])_sendmail_message.getFrom();
+ if (_sendmail_addr != null)
+ for (int i=0; i<_sendmail_addr.length; i++)
+ { <sendmail:from><xsp:expr>_sendmail_addr[i].toString()</xsp:expr></sendmail:from> }
+ _sendmail_addr = (InternetAddress[])_sendmail_message.getReplyTo();
+ if (_sendmail_addr != null)
+ for (int i=0; i<_sendmail_addr.length; i++)
+ { <sendmail:reply-to><xsp:expr>_sendmail_addr[i].toString()</xsp:expr></sendmail:reply-to> }
+ _sendmail_addr = (InternetAddress[])_sendmail_message.getRecipients (Message.RecipientType.TO);
+ if (_sendmail_addr != null)
+ for (int i=0; i<_sendmail_addr.length; i++)
+ { <sendmail:to><xsp:expr>_sendmail_addr[i].toString()</xsp:expr></sendmail:to> }
+ _sendmail_addr = (InternetAddress[])_sendmail_message.getRecipients (Message.RecipientType.CC);
+ if (_sendmail_addr != null)
+ for (int i=0; i<_sendmail_addr.length; i++)
+ { <sendmail:cc><xsp:expr>_sendmail_addr[i].toString()</xsp:expr></sendmail:cc> }
+ _sendmail_addr = (InternetAddress[])_sendmail_message.getRecipients(Message.RecipientType.BCC);
+ if (_sendmail_addr != null)
+ for (int i=0; i<_sendmail_addr.length; i++)
+ { <sendmail:bcc><xsp:expr>_sendmail_addr[i].toString()</xsp:expr></sendmail:bcc> }
+ <sendmail:subject><xsp:expr>_sendmail_message.getSubject()</xsp:expr></sendmail:subject>
+ <sendmail:content><xsp:expr>(String)_sendmail_message.getContent()</xsp:expr></sendmail:content>
+ </xsp:logic>
+ </sendmail:debug>
+ </xsl:template>
+
+
+ <xsl:template match="@*|node()" priority="-1">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+
+
+ <xsl:template name="get-nested-string">
+ <xsl:param name="content"/>
+ <xsl:choose>
+ <xsl:when test="$content/*">
+ ""
+ <xsl:for-each select="$content/node()">
+ <xsl:choose>
+ <xsl:when test="name(.)">
+ + <xsl:apply-templates select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ + "<xsl:value-of select="translate(.,'	 ',' ')"/>"
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>"<xsl:value-of select="normalize-space($content)"/>"</xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+</xsl:stylesheet>
----------------------------------------------------------------------
In case of troubles, e-mail: webmaster@xml.apache.org
To unsubscribe, e-mail: cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org