public class Redirect extends AbstractRedirect
A mailet providing configurable redirection services.
Can produce listserver, forward and notify behaviour, with the original message intact, attached, appended or left out altogether.
It differs from Resend
because (i) some defaults are different,
notably for the following parameters: <recipients>,
<to>, <reversePath> and <inline>; (ii)
because it allows the use of the <static> parameter;.
Use Resend
if you need full control, Redirect
if
the more automatic behaviour of some parameters is appropriate.
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 "unaltered" value, whose meaning is to keep the associated header unchanged and, unless stated differently, corresponds to the assumed default if the parameter is missing.
The configuration parameters are:
<recipients> |
A comma delimited list of addresses for recipients of this message; it will
use the "to" list if not specified, and "unaltered" if
none of the lists is specified. These addresses will only appear in the To: header if no "to" list is supplied. Such addresses can contain "full names", like Mr. John D. Smith <john.smith@xyz.com>. 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. |
<to> |
A comma delimited list of addresses to appear in the To: header; the email
will be delivered to any of these addresses if it is also in the recipients
list. The recipients list will be used if this list is not supplied; if none of the lists is specified it will be "unaltered". Such addresses can contain "full names", like Mr. John D. Smith <john.smith@xyz.com>. 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. |
<sender> |
A single email address to appear in the From: and Return-Path: headers and
become the sender. It can include constants "sender", "postmaster" and "unaltered"; "sender" is equivalent to "unaltered". Default: "unaltered". |
<message> |
A text message to insert into the body of the email. Default: no message is inserted. |
<inline> |
One of the following items:
|
<attachment> |
One of the following items:
|
<passThrough> |
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. Default: false. |
<fakeDomainCheck> |
true or false, if true will check if the sender domain is valid. Default: true. |
<attachError> |
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). Default: false. |
<replyTo> |
A single email address to appear in the Reply-To: header. It can include constants "sender", "postmaster" "null" and "unaltered"; if "null" is specified it will remove this header. Default: "unaltered". |
<reversePath> |
A single email address to appear in the Return-Path: header. It can include constants "sender", "postmaster" and "null"; if "null" is specified then it will set it to <>, meaning "null return path". Notice: the "unaltered" value is not allowed. Default: the value of the <sender> parameter, if set, otherwise remains unaltered. |
<subject> |
An optional string to use as the subject. Default: keep the original message subject. |
<prefix> |
An optional subject prefix prepended to the original message subject, or to a
new subject specified with the <subject> parameter. For example: [Undeliverable mail]. Default: "". |
<isReply> |
true or false, if true the IN_REPLY_TO header will be set to the id of the
current message. Default: false. |
<debug> |
true or false. If this is true it tells the mailet to write some debugging
information to the mailet log. Default: false. |
<static> |
true or false. If this is true it tells the mailet that it can reuse all the
initial parameters (to, from, etc) without re-calculating their values. This
will boost performance where a redirect task doesn't contain any dynamic
values. If this is false, it tells the mailet to recalculate the values for
each e-mail processed. Default: false. |
Example:
<mailet match="RecipientIs=test@localhost" class="Redirect">
<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>
and:
<mailet match="All" class="Redirect">
<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>
<static>TRUE</static>
</mailet>
replyto can be used instead of replyTo; such name is kept for backward compatibility.
AbstractRedirect.SpecialAddress
Constructor and Description |
---|
Redirect() |
Modifier and Type | Method and Description |
---|---|
protected String[] |
getAllowedInitParameters()
Gets the expected init parameters.
|
protected int |
getInLineType()
Gets the
inline property. |
String |
getMailetInfo()
Returns a string describing this mailet.
|
protected Collection<org.apache.mailet.MailAddress> |
getRecipients()
Gets the
recipients property. |
protected org.apache.mailet.MailAddress |
getReversePath()
Gets the
reversePath property. |
protected org.apache.mailet.MailAddress |
getReversePath(org.apache.mailet.Mail originalMail)
Gets the
reversePath property, built dynamically using the
original Mail object. |
protected javax.mail.internet.InternetAddress[] |
getTo()
Gets the
to property. |
protected boolean |
isStatic()
Gets the
static property. |
attachError, attachError, buildAlteredMessage, changeSubject, getAttachmentType, getAttachmentType, getFakeDomainCheck, getFakeDomainCheck, getInLineType, getMessage, getMessage, getMessageHeaders, getPassThrough, getPassThrough, getRecipients, getReplyTo, getReplyTo, getSender, getSender, getSpecialAddress, getSubject, getSubject, getSubjectPrefix, getSubjectPrefix, getTo, getTypeCode, init, isReply, isReply, replaceInternetAddresses, replaceMailAddresses, senderDomainIsValid, service, setDNSService, setIsReply, setRecipients, setReplyTo, setReversePath, setSender, setSubjectPrefix, setTo
public String getMailetInfo()
getMailetInfo
in interface org.apache.mailet.Mailet
getMailetInfo
in class org.apache.mailet.base.GenericMailet
protected String[] getAllowedInitParameters()
getAllowedInitParameters
in class AbstractRedirect
protected boolean isStatic()
AbstractRedirect
Gets the static
property.
Return true to reduce calls to getTo, getSender, getRecipients, getReplyTo, getReversePath amd getMessage where these values don't change (eg hard coded, or got at startup from the mailet config); return false where any of these methods generate their results dynamically eg in response to the message being processed, or by reference to a repository of users.
It is now (from version 2.2) somehow obsolete, as should be always true
because the "good practice" is to use "getX()" methods statically, and
use instead "getX(Mail)" methods for dynamic situations. A false value is
now meaningful only for subclasses of Redirect
older than version
2.2 that were relying on this.
Is a "getX()" method.
isStatic
in class AbstractRedirect
static
init parameterprotected int getInLineType() throws javax.mail.MessagingException
AbstractRedirect
inline
property. May return one of the following
values to indicate how to append the original message to build the new
message:
UNALTERED
: original message is the new message bodyBODY
: original message body is appended to the new
messageHEADS
: original message headers are appended to the new
messageALL
: original is appended with all headersNONE
: original is not appendedgetInLineType
in class AbstractRedirect
inline
init parameterjavax.mail.MessagingException
protected Collection<org.apache.mailet.MailAddress> getRecipients() throws javax.mail.MessagingException
AbstractRedirect
recipients
property. Returns the collection of
recipients of the new message, or null if no change is requested. Is a
"getX()" method.getRecipients
in class AbstractRedirect
recipients
init parameter or the postmaster
address or SpecialAddress.SENDER
or
SpecialAddress.REVERSE_PATH
or
SpecialAddress.UNALTERED
or the to
init
parameter if missing or null
if also the latter is
missingjavax.mail.MessagingException
protected javax.mail.internet.InternetAddress[] getTo() throws javax.mail.MessagingException
AbstractRedirect
to
property. Returns the "To:" recipients of the
new message. or null if no change is requested. Is a "getX()" method.getTo
in class AbstractRedirect
to
init parameter or the postmaster address or
SpecialAddress.SENDER
or
SpecialAddress.REVERSE_PATH
or
SpecialAddress.UNALTERED
or the
recipients
init parameter if missing or
null
if also the latter is missingjavax.mail.MessagingException
protected org.apache.mailet.MailAddress getReversePath() throws javax.mail.MessagingException
AbstractRedirect
reversePath
property. Returns the reverse-path of
the new message, or null if no change is requested. Is a "getX()" method.getReversePath
in class AbstractRedirect
reversePath
init parameter or the postmaster
address or SpecialAddress.SENDER
or
SpecialAddress.NULL
or null
if missingjavax.mail.MessagingException
protected org.apache.mailet.MailAddress getReversePath(org.apache.mailet.Mail originalMail) throws javax.mail.MessagingException
AbstractRedirect
reversePath
property, built dynamically using the
original Mail object. Is a "getX(Mail)" method.getReversePath
in class AbstractRedirect
AbstractRedirect.getReversePath()
; if null return
AbstractRedirect.getSender(Mail)
, meaning the new
requested sender if anyjavax.mail.MessagingException
Copyright © 2002-2012 The Apache Software Foundation. All Rights Reserved.