blob: 8d861931498ce5d9f92b726f6751266625a7e410 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2021-11-12 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache James Project &#x2013; Overview</title>
<style type="text/css" media="all">
@import url("../../css/james.css");
@import url("../../css/maven-base.css");
@import url("../../css/maven-theme.css");
@import url("../../css/site.css");
@import url("../../js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
@import url("../../js/jquery/css/print.css");
@import url("../../js/fancybox/jquery.fancybox-1.3.4.css");
</style>
<script type="text/javascript" src="../../js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../../js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="../../js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
<meta name="author" content="Mailet API Project" />
<meta name="Date-Revision-yyyymmdd" content="20211112" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1384591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="composite">
<div id="banner">
<a href="../../index.html" id="bannerLeft" title="james-logo.png">
<img src="../../images/logos/james-logo.png" alt="James Project" />
</a>
<a href="https://www.apache.org/index.html" id="bannerRight">
<img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" />
</a>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2021-11-12</span>
</div>
<div class="xright"> <a href="../../index.html" title="Home">Home</a>
|
<a href="../../documentation.html" title="James">James</a>
|
<a href="../../mime4j/index.html" title="Mime4J">Mime4J</a>
|
<a href="../../jsieve/index.html" title="jSieve">jSieve</a>
|
<a href="../../jspf/index.html" title="jSPF">jSPF</a>
|
<a href="../../jdkim/index.html" title="jDKIM">jDKIM</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>James components</h5>
<ul>
<li class="collapsed">
<a href="../../documentation.html" title="About James">About James</a>
</li>
<li class="collapsed">
<a href="../../server/index.html" title="Server">Server</a>
</li>
<li class="expanded">
<a href="../../mailet/index.html" title="Mailets">Mailets</a>
<ul>
<li class="none">
<a href="../../mailet/quickstart.html" title="Quick Start">Quick Start</a>
</li>
<li class="none">
<strong>Mailet API</strong>
</li>
<li class="none">
<a href="../../mailet/base/index.html" title="Basic Mailet Toolkit">Basic Mailet Toolkit</a>
</li>
<li class="none">
<a href="../../mailet/standard/index.html" title="Standard Mailets">Standard Mailets</a>
</li>
<li class="none">
<a href="../../mailet/crypto/index.html" title="Crypto Mailets">Crypto Mailets</a>
</li>
<li class="none">
<a href="../../mailet/ai/index.html" title="Mailet AI">Mailet AI</a>
</li>
<li class="none">
<a href="../../mailet/mailetdocs-maven-plugin/index.html" title="MailetDocs">MailetDocs</a>
</li>
<li class="none">
<a href="../../mail.html#Mailet_API_List" title="Mailing Lists">Mailing Lists</a>
</li>
<li class="none">
<a href="../../mailet/release-notes.html" title="Release Notes">Release Notes</a>
</li>
<li class="none">
<a href="../../mailet/apidocs" title="Java Docs">Java Docs</a>
</li>
<li class="none">
<a href="https://issues.apache.org/jira/browse/MAILET" title="Issue Tracker">Issue Tracker</a>
</li>
<li class="none">
<a href="httsp://james.apache.org/download.cgi#Apache_Mailet" title="Download releases">Download releases</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../../mailbox/index.html" title="Mailbox">Mailbox</a>
</li>
<li class="collapsed">
<a href="../../protocols/index.html" title="Protocols">Protocols</a>
</li>
<li class="collapsed">
<a href="../../mpt/index.html" title="MPT">MPT</a>
</li>
</ul>
<h5>Apache Software Foundation</h5>
<ul>
<li>
<strong>
<a title="ASF" href="http://www.apache.org/">ASF</a>
</strong>
</li>
<li>
<a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li>
<a title="License" href="http://www.apache.org/licenses/" >License</a>
</li>
<li>
<a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a title="Security" href="http://www.apache.org/security/">Security</a>
</li>
</ul>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="poweredBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" />
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<section>
<h2><a name="What_is_the_Apache_Mailet_API.3F"></a>What is the Apache Mailet API?</h2>
<p>
The Apache Mailet API is a Java API which allows the rapid development and flexible deployment of email
processing functionality.
</p>
<p>
The Mailet API is a subproject of <a class="externalLink" href="http://james.apache.org">Apache James</a>.
All who are interested in developing the Mailet API and James will be warmly
welcomed on the <a href="/mail-lists.html">mailing lists</a>.
</p>
</section>
<section>
<h2><a name="Quick_Start"></a>Quick Start</h2>
<section>
<h3><a name="What_Is_A_Mailet.3F"></a>What Is A Mailet?</h3>
<p>
A mailet is a mail processing component. Though there are some differences, a servlet as a HTTP
processing component is a useful analogy.
</p>
<p>
Mailets implement <a href="/mailet/apidocs/org/apache/mailet/Mailet.html">Mailet</a>.
Mailets execute within a mailet container.
<a class="externalLink" href="http://james.apache.org/server">James server</a>
is a well known mailet container. Assembly and configuration of mailets and mail processors is the
responsibility of the particular container.
</p>
</section><section>
<h3><a name="Mailet_Basic_Lifecycle"></a>Mailet Basic Lifecycle</h3>
<p>
Mailets have a simple lifecycle managed by the mailet container:
</p>
<ol style="list-style-type: decimal">
<li>
<b>
init(
<a href="apidocs/org/apache/mailet/MailetConfig.html">MailetConfig</a>
config)
</b>
passes environmental information. Any setup necessary should be performed now.
</li>
<li>During processing,
<b>
service(
<a href="apidocs/org/apache/mailet/Mail.html">Mail</a>
mail)
</b>
is called repeatedly. Note that this method may be called concurrently.
</li>
<li>
<b>
destroy()
</b>
is called when the mailet is taken out of service.
</li>
</ol>
</section>
<section>
<h3><a name="Configuration"></a>Configuration</h3>
<p>
<a href="apidocs/org/apache/mailet/MailetConfig.html">MailetConfig</a>
gives access to simple parametrization.
getInitParameter
allows configuration parameters to be passed from the mailet container.
How these parameters are set by the user of the mailet is the responsibility of the container.
More sophisticated configuration and assembly (for example, allowing access to services) is also
the responsibility of the container.
</p>
</section>
<section>
<h3><a name="Communication_With_The_Container"></a>Communication With The Container</h3>
<p>
<a href="apidocs/org/apache/mailet/MailetConfig.html">MailetConfig</a>
allows communication with the container
by calling getMailetContext(). See
<a href="apidocs/org/apache/mailet/MailetContext.html">MailetContext</a>
for more details.
</p>
</section>
<section>
<h3><a name="Basic_Toolkit"></a>Basic Toolkit</h3>
<p>
The
<a class="externalLink" href="http://james.apache.org/mailet/base">Basic Mailet Toolkit</a>
collects lightweight frameworks and utilities likely to be useful for general mailet developers.
</p>
</section>
<section>
<h3><a name="Examples"></a>Examples</h3>
<p>
See <a class="externalLink" href="http://james.apache.org/mailet/standard">Standard mailets</a>.
</p>
</section>
<section>
<h3><a name="Building_the_Mailet_API"></a>Building the Mailet API</h3>
<p>
The build uses <a class="externalLink" href="http://ant.apache.org">Ant</a>.
ant -projecthelp
describes appropriate targets.
ant
runs the default target.
</p>
</section>
</section>
<section>
<h2><a name="Comments.2C_Questions_and_Issues"></a>Comments, Questions and Issues</h2>
<p>Please direct your feedback to the <a href="mail-lists.html">mailet-api mailing list</a>.
</p>
</section>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright &#169; 2006-2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>