FileDocCategorySizeDatePackage
MDNFactory.javaAPI DocApache James 2.3.14681Fri Jan 12 12:56:34 GMT 2007org.apache.james.util.mail.mdn

MDNFactory

public class MDNFactory extends Object
Class MDNFactory creates MimeMultipartReports containing Message Delivery Notifications as specified by RFC 2298.

Fields Summary
Constructors Summary
private MDNFactory()
Default Constructor

        super();
    
Methods Summary
public static org.apache.james.util.mail.MimeMultipartReportcreate(java.lang.String humanText, java.lang.String reporting_UA_name, java.lang.String reporting_UA_product, java.lang.String original_recipient, java.lang.String final_recipient, java.lang.String original_message_id, Disposition disposition)
Answers a MimeMultipartReport containing a Message Delivery Notification as specified by RFC 2298.

param
humanText
param
reporting_UA_name
param
reporting_UA_product
param
original_recipient
param
final_recipient
param
original_message_id
param
disposition
return
MimeMultipartReport
throws
MessagingException

        // Create the message parts. According to RFC 2298, there are two
        // compulsory parts and one optional part...
        MimeMultipartReport multiPart = new MimeMultipartReport();
        multiPart.setReportType("disposition-notification");
        
        // Part 1: The 'human-readable' part
        MimeBodyPart humanPart = new MimeBodyPart();
        humanPart.setText(humanText);
        multiPart.addBodyPart(humanPart);

        // Part 2: MDN Report Part
        // 1) reporting-ua-field
        StringBuffer mdnReport = new StringBuffer(128);
        mdnReport.append("Reporting-UA: ");
        mdnReport.append((reporting_UA_name == null ? "" : reporting_UA_name));
        mdnReport.append("; ");
        mdnReport.append((reporting_UA_product == null ? "" : reporting_UA_product));
        mdnReport.append("\r\n");
        // 2) original-recipient-field
        if (null != original_recipient)
        {
            mdnReport.append("Original-Recipient: ");
            mdnReport.append("rfc822; ");
            mdnReport.append(original_recipient);
            mdnReport.append("\r\n");
        }
        // 3) final-recipient-field
        mdnReport.append("Final-Recepient: ");
        mdnReport.append("rfc822; ");
        mdnReport.append((final_recipient == null ? "" : final_recipient));
        mdnReport.append("\r\n");
        // 4) original-message-id-field
        mdnReport.append("Original-Message-ID: ");
        mdnReport.append((original_message_id == null ? "" : original_message_id));
        mdnReport.append("\r\n");
        // 5) disposition-field
        mdnReport.append(disposition.toString());
        mdnReport.append("\r\n");
        MimeBodyPart mdnPart = new MimeBodyPart();
        mdnPart.setContent(mdnReport.toString(), "message/disposition-notification");
        multiPart.addBodyPart(mdnPart);

        // Part 3: The optional third part, the original message is omitted.
        // We don't want to propogate over-sized, virus infected or
        // other undesirable mail!
        // There is the option of adding a Text/RFC822-Headers part, which
        // includes only the RFC 822 headers of the failed message. This is
        // described in RFC 1892. It would be a useful addition!        
        return multiPart;