// 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
StringBuilder mdnReport = new StringBuilder(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!