if ( enableAliases && user.getAliasing() ) {
username = user.getAlias();
}
// Forwarding takes precedence over local aliases
if ( enableForwarding && user.getForwarding() ) {
MailAddress forwardTo = user.getForwardingDestination();
if ( forwardTo == null ) {
StringBuffer errorBuffer =
new StringBuffer( 128 )
.append( "Forwarding was enabled for " )
.append( username )
.append( " but no forwarding address was set for this account." );
throw new MessagingException( errorBuffer.toString() );
}
Collection recipients = new HashSet();
recipients.add( forwardTo );
try {
sendMail( sender, recipients, message );
if ( getLogger().isInfoEnabled() ) {
StringBuffer logBuffer =
new StringBuffer( 128 )
.append( "Mail for " )
.append( username )
.append( " forwarded to " )
.append( forwardTo.toString() );
getLogger().info( logBuffer.toString() );
}
return;
}
catch ( MessagingException me ) {
if ( getLogger().isErrorEnabled() ) {
StringBuffer logBuffer =
new StringBuffer( 128 )
.append( "Error forwarding mail to " )
.append( forwardTo.toString() )
.append( "attempting local delivery" );
getLogger().error( logBuffer.toString() );
}
throw me;
}