/****************************************************************
* 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. *
****************************************************************/
package org.apache.james.transport.mailets;
/**
* <P>A mailet providing configurable redirection services.</P>
* <P>Can produce listserver, forward and notify behaviour, with the original
* message intact, attached, appended or left out altogether.
* Can be used as a replacement to {@link Redirect}, having more consistent defaults,
* and new options available.<BR>
* Use <CODE>Resend</CODE> if you need full control, <CODE>Redirect</CODE> if
* the more automatic behaviour of some parameters is appropriate.</P>
* <P>This built in functionality is controlled by the configuration as laid out below.
* In the table please note that the parameters controlling message headers
* accept the <B>"unaltered"</B> value, whose meaning is to keep the associated
* header unchanged and, unless stated differently, corresponds to the assumed default
* if the parameter is missing.</P>
* <P>The configuration parameters are:</P>
* <TABLE width="75%" border="1" cellspacing="2" cellpadding="2">
* <TR valign=top>
* <TD width="20%"><recipients></TD>
* <TD width="80%">
* A comma delimited list of addresses for recipients of this message.<BR>
* Such addresses can contain "full names", like
* <I>Mr. John D. Smith <john.smith@xyz.com></I>.<BR>
* The list can include constants "sender", "from", "replyTo", "postmaster", "reversePath", "recipients", "to", "null" and "unaltered";
* "replyTo" uses the ReplyTo header if available, otherwise the
* From header if available, otherwise the Sender header if available, otherwise the return-path;
* "from" is made equivalent to "sender", and "to" is made equivalent to "recipients";
* "null" is ignored.
* Default: "unaltered".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><to></TD>
* <TD width="80%">
* A comma delimited list of addresses to appear in the To: header.<BR>
* Such addresses can contain "full names", like
* <I>Mr. John D. Smith <john.smith@xyz.com></I>.<BR>
* The list can include constants "sender", "from", "replyTo", "postmaster", "reversePath", "recipients", "to", "null" and "unaltered";
* "from" uses the From header if available, otherwise the Sender header if available,
* otherwise the return-path;
* "replyTo" uses the ReplyTo header if available, otherwise the
* From header if available, otherwise the Sender header if available, otherwise the return-path;
* "recipients" is made equivalent to "to";
* if "null" is specified alone it will remove this header.
* Default: "unaltered".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><sender></TD>
* <TD width="80%">
* A single email address to appear in the From: header and become the sender.<BR>
* It can include constants "sender", "postmaster" and "unaltered";
* "sender" is equivalent to "unaltered".<BR>
* Default: "unaltered".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><message></TD>
* <TD width="80%">
* A text message to insert into the body of the email.<BR>
* Default: no message is inserted.
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><inline></TD>
* <TD width="80%">
* <P>One of the following items:</P>
* <UL>
* <LI>unaltered The original message is the new
* message, for forwarding/aliasing</LI>
* <LI>heads The
* headers of the original message are appended to the message</LI>
* <LI>body The
* body of the original is appended to the new message</LI>
* <LI>all Both
* headers and body are appended</LI>
* <LI>none Neither
* body nor headers are appended</LI>
* </UL>
* Default: "unaltered".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><attachment></TD>
* <TD width="80%">
* <P>One of the following items:</P>
* <UL>
* <LI>heads The headers of the original
* are attached as text</LI>
* <LI>body The body of the original
* is attached as text</LI>
* <LI>all Both
* headers and body are attached as a single text file</LI>
* <LI>none Nothing is attached</LI>
* <LI>message The original message is attached as type message/rfc822,
* this means that it can, in many cases, be opened, resent, fw'd, replied
* to etc by email client software.</LI>
* </UL>
* Default: "none".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><passThrough></TD>
* <TD width="80%">
* true or false, if true the original message continues in the
* mailet processor after this mailet is finished. False causes the original
* to be stopped.<BR>
* Default: false.
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><fakeDomainCheck></TD>
* <TD width="80%">
* true or false, if true will check if the sender domain is valid.<BR>
* Default: true.
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><attachError></TD>
* <TD width="80%">
* true or false, if true any error message available to the
* mailet is appended to the message body (except in the case of inline ==
* unaltered).<BR>
* Default: false.
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><replyTo></TD>
* <TD width="80%">
* A single email address to appear in the Reply-To: header.<BR>
* It can include constants "sender", "postmaster" "null" and "unaltered";
* if "null" is specified it will remove this header.<BR>
* Default: "unaltered".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><reversePath></TD>
* <TD width="80%">
* A single email address to appear in the Return-Path: header.<BR>
* It can include constants "sender", "postmaster" "null" and "unaltered";
* if "null" is specified then it will set it to <>, meaning "null return path".<BR>
* Default: "unaltered".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><subject></TD>
* <TD width="80%">
* An optional string to use as the subject.<BR>
* Default: keep the original message subject.
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><prefix></TD>
* <TD width="80%">
* An optional subject prefix prepended to the original message
* subject, or to a new subject specified with the <I><subject></I> parameter.<BR>
* For example: <I>[Undeliverable mail]</I>.<BR>
* Default: "".
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><isReply></TD>
* <TD width="80%">
* true or false, if true the IN_REPLY_TO header will be set to the
* id of the current message.<BR>
* Default: false.
* </TD>
* </TR>
* <TR valign=top>
* <TD width="20%"><debug></TD>
* <TD width="80%">
* true or false. If this is true it tells the mailet to write some debugging
* information to the mailet log.<BR>
* Default: false.
* </TD>
* </TR>
* </TABLE>
*
* <P>Example:</P>
* <PRE><CODE>
* <mailet match="RecipientIs=test@localhost" class="Resend">
* <recipients>x@localhost, y@localhost, z@localhost</recipients>
* <to>list@localhost</to>
* <sender>owner@localhost</sender>
* <message>sent on from James</message>
* <inline>unaltered</inline>
* <passThrough>FALSE</passThrough>
* <replyTo>postmaster</replyTo>
* <prefix xml:space="preserve">[test mailing] </prefix>
* <!-- note the xml:space="preserve" to preserve whitespace -->
* <static>TRUE</static>
* </mailet>
* </CODE></PRE>
*
* <P>and:</P>
*
* <PRE><CODE>
* <mailet match="All" class="Resend">
* <recipients>x@localhost</recipients>
* <sender>postmaster</sender>
* <message xml:space="preserve">Message marked as spam:</message>
* <inline>heads</inline>
* <attachment>message</attachment>
* <passThrough>FALSE</passThrough>
* <attachError>TRUE</attachError>
* <replyTo>postmaster</replyTo>
* <prefix>[spam notification]</prefix>
* </mailet>
* </CODE></PRE>
*
* <P>The following example forwards the message without any modification, based on the defaults:</P>
* <PRE><CODE>
* <mailet match="All" class="Resend"/;>
* </CODE></PRE>
* <P><I>replyto</I> can be used instead of
* <I>replyTo</I>; such name is kept for backward compatibility.</P>
* <P><B>WARNING: as the message (or a copy of it) is reinjected in the spool without any modification,
* the preceding example is very likely to cause a "configuration loop" in your system,
* unless some other mailet has previously modified something (a header for instance) that could force the resent
* message follow a different path so that it does not return here unchanged.</B></P>
*
* @version CVS $Revision: 494012 $ $Date: 2007-01-08 11:23:58 +0100 (Mo, 08 Jan 2007) $
* @since 2.2.0
*/
public class Resend extends AbstractRedirect {
/**
* Returns a string describing this mailet.
*
* @return a string describing this mailet
*/
public String getMailetInfo() {
return "Redirect Mailet";
}
/** Gets the expected init parameters. */
protected String[] getAllowedInitParameters() {
String[] allowedArray = {
// "static",
"debug",
"passThrough",
"fakeDomainCheck",
"inline",
"attachment",
"message",
"recipients",
"to",
"replyTo",
"replyto",
"reversePath",
"sender",
"subject",
"prefix",
"attachError",
"isReply"
};
return allowedArray;
}
/* ******************************************************************** */
/* ****************** Begin of getX and setX methods ****************** */
/* ******************************************************************** */
/* ******************************************************************** */
/* ******************* End of getX and setX methods ******************* */
/* ******************************************************************** */
}
|