<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" "../../dtd/document-v10.dtd">

<document>
  <header>
    <title>MailAction in Cocoon</title>
    <version>0.9</version>
    <type>Technical document</type>
    <authors>
      <person name="Bernhard Huber" email="huber.at.apache.org"/>
    </authors>
    <abstract>This document describes the MailAcion of Cocoon.</abstract>
  </header>
  <body>
    <s1 title="MailAction">
      <table>
        <tr>
          <td>NAME</td><td>mail</td>
        </tr>
        <tr>
          <td>WHAT</td><td>The <code>MailAction</code> component is used for 
            creating javamail objects, and putting them into the request attribute map.
          </td>
        </tr>
        <tr>
          <td>TYPE</td><td>Action, Sitemap Component</td>
        </tr>
        <tr>
          <!-- choose Core, the block name, or Scratchpad 
            depending on where MailAction sources live
          -->
          <td>BLOCK</td><td>Scratchpad/Block-Mail</td>
        </tr>
        <tr>
          <td>CLASS</td><td>org.apache.cocoon.mail.MailAction</td>
        </tr>
        <!-- uncomment folling tr iff MailAction is deprecated -->
        <!--tr>
          <td>DEPRECATED</td><td>Cocoon 2.0, 2.1</td>
        </tr-->
        <tr>
          <td>SINCE</td><td>Cocoon 2.1</td>
        </tr>
        <tr>
          <td>CACHEABLE</td><td>not applicable</td>
        </tr>
      </table>
    </s1>
    <s1 title="Description">
      <p>
        The <code>MailAction</code> is the central for triggering the creation of javamail objects.
        Javamail objects as they are created are put into the request attribute map.
      </p>
      <p>
        Moreover <code>MailAction</code> maintains an http-session, and putting into the 
        http-session the <code>mail-context</code> of a mail session.
      </p>
    </s1>
    <s1 title="Usage">
      <p>
        Use the <code>MailAction</code> in case of accessing information accessible via 
        IMAP, or more general accessible via an registed javamail provider. 
      </p>
      <s2 title="Sitemap pipeline examples">
        <p>
          Setting up the MailAction requires configuring the mail session. 
          The parameter <code>store-urlname</code> identifies the store which should be used.
          The snippet below spefies using the protocol <code>imap</code>, and using the 
          imap server host <code>imap-server-host-name</code>.
          <br/>
          Moreover the request parameters <code>mail-userid</code>, and <code>mail-passwd</code>
          replaces the placeholders <code>''mail-userid''</code>, and <code>''mail-passwd''</code>
        </p>
        <p>
          Finally as the javamail Session class accepts properties, for configuration purpose,
          the snippet below switches off the session debugging explicitly.
          Parameter names having prefix <code>javax.mail.Session.props:</code> are put
          into the javamail session properties map, stripping off the prefix first..
        </p>
        <source><![CDATA[
<map:match pattern="mail/*.html">
  <map:action type="mail">
    <!-- configure MailAction -->
    <map:parameter name="store-urlname" 
      value="imap://''mail-userid'':''mail-passwd''@imap-server-host-name/"/>
    <map:parameter name="javax.mail.Session.props:mail.debug" 
      value="false"/>
  </map:action>
  
  <!-- access javamail objects -->
  <map:generator type="serverpages" src="docs/{1}.xsp"/>
  <map:transform src="stylesheets/mail2html.xsl"/>
  <map:transform type="html"/>
</map:match>
        ]]></source>
      </s2>
      
      <s2 title="Sitemap component configuration example">
        <p>
          The <code>MailAction</code> has no specific configuration possibilities. 
        </p>
        <source><![CDATA[
<map:actions...
  <map:action name="mail" 
    src="org.apache.cocoon.mail.Action"
    logger="sitemap.action.mail"
  />
...
]]></source>
      </s2>
      <s2 title="Configuration">
        <p>
          The <code>MailAction</code> has no specific configuration possibilities.
        </p>
      </s2>
      <s2 title="Setup">
        <p>
          Setting up the MailAction specifies the javamail Session to use, and 
          principal javamail Store to use.
        </p>
      </s2>
      
      <s2 title="Effect on Object Model and Sitemap Parameters">
        <p>
        
        </p>
        
      </s2>
      <s2 title="Request Attribute Objects">
        <p>
          As noted above <code>MailAction</code> puts XMLizable javamail objects
          into the request attribute map. The following table lists the request attribute
          names, set by <code>MailAction</code>.
        </p>
        <table>
          <caption>Request Attribues Set By MailAction</caption>
          <tr><th>Request Attribute Name</th><th>Comment</th></tr>
          <tr><td>folder</td><td>A single folder</td></tr>
          <tr><td>folders</td><td>Multiple folders</td></tr>
          <tr><td>message</td><td>A single message</td></tr>
          <tr><td>messages</td><td>Multiple messages</td></tr>
          <tr><td>mail-current-working-folder</td><td>The current working folder name</td></tr>
          <tr><td>mail-current-working-command</td><td>The command processded by MailAction</td></tr>
        </table>
        <p>
          Each command generates zero, one, or more javamail objects, which are wrapped
          to become XMLizable, and put into the request attribute map.
        </p>
      </s2>
    </s1>
    <s1 title="MailAction Commands">
      <p>
        The <code>MailAction</code> supports following commands
      </p>
      <table>
        <caption>List Of MailAction commands</caption>        
        <tr><th>Command</th><th>Class</th></tr>
        <tr><td>cat-folder</td><td>MailCommandManager.MailFolderCatCommand</td></tr>
        <tr><td>refresh-folder</td><td>MailCommandManager.MailRefreshFolderCommand</td></tr>
        <tr><td>list-folder</td><td>MailCommandManager.MailListFolderCommand</td></tr>
        <tr><td>list-folder-messages</td><td>MailCommandManager.MailListMessagesCommand</td></tr>
        <tr><td>search-folder-messages</td><td>MailCommandManager.MailSearchMessagesCommand</td></tr>
        <tr><td>cat-message-by-id</td><td>MailCommandManager.MailCatMessageByIdCommand</td></tr>
        <tr><td>cat-message-by-uid</td><td>MailCommandManager.MailCatMessageByUIDCommand</td></tr>
        <tr><td>cat-attachment-of-message-by-id</td><td>MailCommandManager.MailCatAttachmentMessageByIdCommand</td></tr>
      </table>
      
      <p>
        The following sections describe each of the commands above.
      </p>
      <s2 title="MailFolderCatCommand">
        <p>
          This command cats information about a folder
        </p>
        <table>
          <caption>MailFolderCatCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
        </table>
      </s2>
      <!-- begin of description of commands -->
      <s2 title="MailRefreshFolderCommand">
        <p>
          This command closes, and opens a folder, as a side effects new messages of a folder
          are read.
        </p>
        <table>
          <caption>MailRefreshFolderCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
        </table>
      </s2>
      <s2 title="MailListFolderCommand">
        <p>
          This command list all subfolders of a folder.
        </p>
        <table>
          <caption>MailListFolderCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
          <tr><td>folder-pattern</td><td>optional</td><td>Speficies the folder-pattern to use,
            see javamail documentation for allowed wildcards, by default the folder-pattern '%' is used.
            </td>
          </tr>
        </table>
      </s2>
      <s2 title="MailListMessagesCommand">
        <p>
          This command lists all messages of a folder. This command does not requests
          the mail content, only the mail header information is prefetched.
        </p>
        <table>
          <caption>MailListMessagesCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
        </table>
      </s2>
      <s2 title="MailSearchMessagesCommand">
        <p>
          This command searches for messages. It uses the javamail <code>SearchTerm</code>
          for searching, and it searches only in Subject, and From fields of each message.
          It uses <code>SubjectTerm</code>, and <code>FromStringTerm</code> for searching.
          See the javamail documentation for <code>SearchTerm</code> details.
        </p>
        <table>
          <caption>MailSearchMessagesCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
          <tr><td>search</td><td>optional</td><td>Speficies the search string, by default it has the
            value of an empty string, matching all messages.</td>
          </tr>
        </table>
      </s2>
      <s2 title="MailCatMessageByIdCommand">
        <p>
          This command cats information about a message. The message is specified by
          it message id. This command requests the content of a message.
        </p>
        <table>
          <caption>MailCatMessageByIdCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
          <tr><td>id</td><td>mandatory</td><td>Speficies the msgid integer value</td></tr>
        </table>
      </s2>
      <s2 title="MailCatMessageByUIDCommand">
        <p>
          This command cats information about a message. The message is specified by
          it message id. This command requests the content of a message.
        </p>
        <table>
          <caption>MailCatMessageByUIDCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
          <tr><td>uid</td><td>mandatory</td><td>Speficies the uid of a message</td></tr>
        </table>
      </s2>
      <s2 title="MailCatAttachmentMessageByIdCommand paramters">
        <p>
          This command cats an attachment of a mail.
        </p>
        <table>
          <caption>MailCatMessageByIdCommand parameters</caption>
          <tr><th>Parametername</th><th>Mode</th><th>Comment</th></tr>
          <tr><td>folder</td><td>optional</td><td>Speficies the foldername</td></tr>
          <tr><td>id</td><td>mandatory</td><td>Speficies the msgid integer value</td></tr>
          <tr><td>part-id</td><td>mandatory</td><td>Speficies the id of the requested mail part.</td></tr>
        </table>
      </s2>
      
      <!-- end of description of commands -->
      
    </s1>
    <s1 title="Marshalling Javamail Objects">
      <p>
        As <code>MailAction</code> puts XMLizable javamail objects like 
        <code>javax.mail.Folder</code>, <code>javax.mail.Message</code> into the request
        attribute map, the following sections describe the xml document structure of
        these objects
      </p>
    </s1>

    <s1 title="Bugs/Caveats">
      <p>
        The <code>MailAction</code> is still work in progress.
        The http-session handling, and the javamail session handling is not stable
        under every cirumstances.
      </p>
    </s1>
    <s1 title="History">
      <p>
        01-04-03: initial creation
      </p>
    </s1>
    <s1 title="Copyright">
      <p>
        Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
      </p>
    </s1>
    <s1 title="See also">
      <p>
        As <code>MailAction</code> relies on the javamail package, read more about
        <link href="http://java.sun.com/products/javamail/index.html">javamail</link>.
      </p>
      <p>
      </p>
    </s1>
  </body>
</document>

