You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by ha...@apache.org on 2003/04/17 22:18:09 UTC

cvs commit: cocoon-2.1/src/documentation/xdocs/userdocs/xsp sendmail.xml book.xml

haul        2003/04/17 13:18:09

  Modified:    src/documentation/xdocs/userdocs/xsp book.xml
  Added:       src/documentation/xdocs/userdocs/xsp sendmail.xml
  Log:
  docs for sendmail logicsheet
  thanks to Frank Ridderbusch <frank.ridderbusch AT fujitsu-siemens.com>
  
  Revision  Changes    Path
  1.2       +1 -0      cocoon-2.1/src/documentation/xdocs/userdocs/xsp/book.xml
  
  Index: book.xml
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/documentation/xdocs/userdocs/xsp/book.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- book.xml	9 Mar 2003 00:08:29 -0000	1.1
  +++ book.xml	17 Apr 2003 20:18:09 -0000	1.2
  @@ -23,6 +23,7 @@
       <menu-item label="Session" href="session.html"/>
       <menu-item label="ESQL" href="esql.html"/>
       <menu-item label="Forms" href="logicsheet-forms.html"/>
  +    <menu-item label="Sendmail" href="sendmail.html"/>
     </menu>
   
   </book>
  
  
  
  1.1                  cocoon-2.1/src/documentation/xdocs/userdocs/xsp/sendmail.xml
  
  Index: sendmail.xml
  ===================================================================
  <?xml version="1.0" encoding="utf-8"?>
  <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN"
                            "../../dtd/document-v10.dtd">
  <document>
    <header>
      <title>Sendmail Logicsheet</title>
  
  <!--
  Credits:
  
  The skeleton was taken from the Session logicsheet documentation by
  Christopher Painter-Wakefield. An article on
  http://www.cocooncenter.org/ by  Perry Molendijk <pe...@inflexions.com>
  describing the setup of the Sendmail logicsheet has been a major
  inspiration.
  
  This documentation describes the features as implemented
  by patch attachment
  
  http://nagoya.apache.org/bugzilla/showattachment.cgi?attach_id=4879
  
  to
  
  http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15005
  -->
  
      <authors>
        <person name="Frank Ridderbusch" email="frank.ridderbusch@gmx.de"/>
      </authors>
    </header>
  
    <body>
      <s1 title="Description">
        <p>The Sendmail logicsheet (taglib) is a XSP logicsheet that
  	wraps XML tags around the operation of sending an email
  	message. Specifically, the Sendmail logicsheet provides an XML
  	interface to the primary methods of the Java Mail API for
  	sending an internet mail including the ability to attach any
  	binary data files to the message (see the
  	<link
  	  href="http://java.sun.com/products/javamail/">Java
  	  Mail API</link> ) for more
  	information.</p>
  
        <p>The Sendmail logicsheet is an alternative to the <link
  	  href="../actions/sendmail-action.html">Sendmail
  	  action</link>.</p>
      </s1>
  
      <s1 title="Usage">
        <p>As an XSP logicsheet, the Sendmail logicsheet can only be used
  	in an XSP page. It may be helpful to be familiar with <link
  	  href="xsp.html">XSP</link> before working with this (or any)
  	logicsheet.</p>
  
        <p>Since the Sendmail logicsheet is not activated in the default
  	Cocoon setup, a couple of steps must be taken before an email
  	can be send.</p>
  
        <p>First of all Cocoon must have been compiled with the required
  	Java Mail API libraries. The libraries <code>mail.jar</code>
  	from the Java Mail distribution and the library
  	<code>activation.jar</code> from the Java Activation Framework
  	have to be copied to the location <code>lib/local</code> of
  	Cocoon's source distribution. Cocoon must then be recompiled.
        </p>
  
        <p>Before the Sendmail logicsheet can be used, some setup in
  	<code>cocoon.xconf</code> is required. See, if the following
  	fragment is already existing.</p>
  
        <source>
  <![CDATA[
  <builtin-logicsheet>
    <parameter name="prefix" value="sendmail"/>
    <parameter name="uri" value="http://apache.org/cocoon/sendmail/1.0"/>
    <parameter name="href"
     value="resource://org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl"/>
  </builtin-logicsheet>
  ]]>
        </source>
  
        <p>If it is not present, it is easiest to simply locate the
  	entry <code>xsp-response</code> for the Response logicsheet
  	and put the above fragment before the
  	<code>&lt;builtin-logicsheet&gt;</code> of the Response
  	logicsheet entry. This can either be done before recompilation
  	or later, when Cocoon is already deployed. If done later,
  	Cocoon must be reloaded.</p>
  
        <p>To use the Sendmail logicsheet, you must first declare the
  	<em>sendmail</em> namespace, mapping it to the uri
  	<em>http://apache.org/cocoon/sendmail/1.0</em>. These
  	steps will result in code like this:</p>
  
        <source>
  <![CDATA[
  <xsp:page language="java"
    xmlns:xsp="http://apache.org/xsp"
    xmlns:sendmail="http://apache.org/cocoon/sendmail/1.0">
  
  ...
  
  </xsp:page>
  ]]>
        </source>
  
        <p>You may then use any of the elements in the <em>sendmail</em>
  	namespace described in the <link
  	  href="sendmail.html#elements">Elements Reference</link>
  	section below.</p>
      </s1>
  
      <s1 title="Example Code">
        <p>The following code shows an example of using the Sendmail
  	logicsheet. A HTML form is used, to post information about
  	updated documentation to some imaginary mailing list. The XSP
  	page is invoked from a HTML form like this.</p>
  
        <source>
  <![CDATA[
  <form action="/cocoon/xsp/mail/send-a-mail" method="post"
        enctype="multipart/form-data">
  
  <input type="text" name="subject" size="56" />
  ...
  <input type="text" name="url1" size="56" />
  ...
  <input type="text" name="url1" size="56" />
  ...
  <input type="file" name="uploaded_file1" size="56" />
  ...
  <input type="file" name="uploaded_file2" size="56" />
  ...
  <textarea name="changes" rows="5" cols="72">
  </textarea>
  ...
  </form>
  ]]>
        </source>
  
        <p>Since the form allows to attach upto two arbitrary files, it
  	is important, that <code>enctype="multipart/form-data"</code>
  	is used. This is the XSP code, that is invoked:</p>
  
        <source>
  <![CDATA[
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <xsp:page language="java"
  	  xmlns:xsp="http://apache.org/xsp"
  	  xmlns:xsp-request="http://apache.org/xsp/request/2.0"
  	  xmlns:sendmail="http://apache.org/cocoon/sendmail/1.0">
    <email>
      <xsp:logic>
        StringBuffer body = new StringBuffer();
        body.append("  Documentation:\n----------------\n");
        body.append("URL: ");
        body.append(<xsp-request:get-parameter name="url1"/>);
        body.append("\n");
        body.append("URL: ");
        body.append(<xsp-request:get-parameter name="url2"/>);
        body.append("\n\n");
        body.append("     Changes:\n----------------\n");
        body.append(<xsp-request:get-parameter name="changes"/>);
        body.append("\n\n");
      </xsp:logic>
      <sendmail:send-mail>
        <sendmail:from>from address</sendmail:from>
        <sendmail:to>some maillinglist address</sendmail:to>
        <sendmail:subject><xsp-request:get-parameter name="subject"/></sendmail:subject>
        <!-- Modify the next line to point to your mail server -->
        <sendmail:smtphost>localhost</sendmail:smtphost>
        <sendmail:body><xsp:expr>body.toString()</xsp:expr></sendmail:body>
        <sendmail:attachment>
          <sendmail:param name="object"><xsp:expr>request.get("attachment")</xsp:expr></sendmail:param>
        </sendmail:attachment>
        <sendmail:attachment url="context://welcome.xml" mime-type="text/plain" name="foo.txt"/>
        <sendmail:attachment url="cocoon:///"            mime-type="text/html"  name="welcome.html"/>
  
        <sendmail:on-success>
           <p>
             Email successfully sent.
           </p>
        </sendmail:on-success>
        <sendmail:on-error>
     		 <p style="color:red;">
             An error occurred: <sendmail:error-message/>
     		 </p>
        </sendmail:on-error>
      </sendmail:send-mail>
   </email>
  </xsp:page>
  ]]>
        </source>
  
        <p>Cocoons feature to automatically disassemble the incoming
  	request puts the uploaded files automatically into the upload
  	directory and the files are accessible through the
  	<code>uploaded_file[12]</code> request parameters (make sure,
  	that <code>autosave-uploads</code> is set to <code>true</code>
  	in the <code>WEB-INF/web.xml</code> file of the Cocoon
  	context). By using
  	<code>&lt;xsp:expr&gt;request.get("req-param")&lt;/xsp:expr&gt;</code>
  	you actually get an object of class
  	<code>org.apache.cocoon.servlet.multipart.Part</code>.
  	The <code>&lt;sendmail:send-mail&gt;</code> fragment is
  	replaced with an <code>&lt;error&gt;</code> element, if an
  	error occurs during the sending of the message.</p>
  
        <p>Another noteworthy item is the formatting of the body text
  	through a Java <code>StringBuffer</code>. Any formatting, that
  	would be placed inside the <code>&lt;sendmail:body&gt;</code>
  	element would be lost due to the internal workings of the
  	Sendmail logicsheet.</p>
  
      </s1>
  
      <anchor id="elements" />
  
      <s1 title="Elements Reference">
  
        <table>
          <caption>All of the Sendmail logicsheet elements, in alphabetic
          order.</caption>
  
          <tr>
            <th>Element Name</th>
  
            <th>Attributes/Child Elements</th>
  
            <th>Description</th>
          </tr>
  
          <tr>
  
            <td>sendmail:attachment</td>
  
            <td>
  	  </td>
  
            <td>Sets the attachment for this email. Attributes for setting name,
                mime-type, or an URL (e.g. using cocoon:-protocol!). Parameters
  can be set dynamically using &lt;sendmail:param/&gt; syntax. If an object is
  to be attached, it must be set this way. Use the following
  	    expression to obtain the correct object from the request:
  	    <code>&lt;xsp:expr&gt;request.get("req-param")&lt;/xsp:expr&gt;</code>.
            </td>
          </tr>
  
          <tr>
            <td>sendmail:bcc</td>
  
            <td>
            </td>
  
            <td>Sets the recipients of a blind carbon copy of the
  	    email. This can be a list of comma separated email
  	    addresses.</td>
          </tr>
  
          <tr>
            <td>sendmail:body</td>
  
            <td>
            </td>
  
            <td>Sets the body text of the message.</td>
          </tr>
  
  
  
          <tr>
            <td>sendmail:cc</td>
  
            <td>
            </td>
  
            <td>Sets the recipients of a carbon copy of this email. This
  	    can be a list of comma separated email addresses.</td>
          </tr>
  
          <tr>
            <td>sendmail:charset</td>
  
            <td>
            </td>
  
            <td>Sets the character set for encoding the message. This
  	    tag has only an effect, if no attachments are send.</td>
          </tr>
  
          <tr>
            <td>sendmail:from</td>
  
            <td>
            </td>
  
            <td>Sets the from address of the message.</td>
          </tr>
  
          <tr>
            <td>sendmail:smtphost</td>
  
            <td>
            </td>
  
            <td>The IP-address or the name of the host, which should
  	    deliver the email message. Better know as the mail
  	    transfer agent or short MTA.</td>
          </tr>
  
          <tr>
            <td>sendmail:subject</td>
  
            <td>
            </td>
  
            <td>Sets the subject line of the message.</td>
          </tr>
  
          <tr>
            <td>sendmail:to</td>
  
            <td></td>
  
            <td>Sets the destination/to address of the email message.
  	    This can be a list of comma separated email
  	    addresses.</td>
          </tr>
  
        </table>
      </s1>
  
      <s1 title="Hint">
        <p>Please read this <link
  	  href="../actions/sendmail-action.html#hint">hint</link>,
  	since it applies here as well.</p>
      </s1>
    </body>
  </document>
  
  <!--
  Local Variables:
  mode: xml
  sgml-indent-data: t
  End:
  -->