Well, why don't you start from the existing Bounce mailet [1] (which
extends AbstractNotify) rather than wrapping the MailetContext?
Thx, Eric
[1]
https://svn.apache.org/repos/asf/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
On 05/01/2013 15:44, Rajender Vallapureddy wrote:
Hi Eric,
I am writing a custom mailet and based on the condition, I might have
to deny sending mail message and bounce it.
My bounce method is getting called, but unable to bounce the mail message.
I have written a helper class and implemented my bounce method.
Following is the code.
within my mailet I am calling the method bounce
mailetcntxtwrapper = new MailetContextWrapper();
mailetcntxtwrapper.bounce(mail, "Denied access from this message", new
MailAddress(username));
public class MailetContextWrapper implements MailetContext {
@Override
public void bounce(Mail mail, String message, MailAddress bouncer)
throws MessagingException {
if(mail == null) {
System.out.println("Mail is null");
}
if (mail.getSender() == null) {
if (log.isInfoEnabled())
log.info("Mail to be bounced contains a null (<>)
reverse path. No bounce will be sent.");
return;
} else {
// Bounce message goes to the reverse path, not to the Reply-To
// address
if (log.isInfoEnabled())
log.info("Processing a bounce request for a message
with a reverse path of " + mail.getSender().toString());
}
MailImpl reply = rawBounce(mail, message);
// Change the sender...
reply.getMessage().setFrom(bouncer.toInternetAddress());
reply.getMessage().saveChanges();
// Send it off ... with null reverse-path
reply.setSender(null);
sendMail(reply);
LifecycleUtil.dispose(reply);
}
/**
* Generates a bounce mail that is a bounce of the original message.
*
* @param bounceText the text to be prepended to the message to
describe the bounce
* condition
* @return the bounce mail
* @throws MessagingException if the bounce mail could not be created
*/
private MailImpl rawBounce(Mail mail, String bounceText) throws
MessagingException {
System.out.println("rawbound method called");
// This sends a message to the james component that is a bounce of the
// sent message
MimeMessage original = mail.getMessage();
MimeMessage reply = (MimeMessage) original.reply(false);
reply.setSubject("Re: " + original.getSubject());
reply.setSentDate(new Date());
Collection<MailAddress> recipients = new HashSet<MailAddress>();
recipients.add(mail.getSender());
InternetAddress addr[] = {new
InternetAddress(mail.getSender().toString())};
reply.setRecipients(Message.RecipientType.TO, addr);
reply.setFrom(new
InternetAddress(mail.getRecipients().iterator().next().toString()));
reply.setText(bounceText);
reply.setHeader(RFC2822Headers.MESSAGE_ID, "replyTo-" +
mail.getName());
return new MailImpl("replyTo-" + mail.getName(), new
MailAddress(mail.getRecipients().iterator().next().toString()),
recipients, reply);
}
}
Please guide me to get my custom bounce working. Also I want to make
sure that once the bounce happens, the mail is not processed any
further. What configuration should I be looking at within the mailet
configuration.
Appreciate your help :)
Thank you,
Regards,
Rajender
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org