import java.util.Properties;

import javax.activation.CommandMap;
import javax.activation.MailcapCommandMap;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.InternetHeaders;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class JI9037367 {

	public static void main(String[] args) throws Exception {
		MailcapCommandMap mailcapCommandMap = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
		mailcapCommandMap.addMailcap("application/XML;; x-java-content-handler=com.sun.xml.internal.ws.encoding.XmlDataContentHandler"); 
		mailcapCommandMap.addMailcap("application/xml;; x-java-content-handler=com.sun.xml.internal.ws.encoding.XmlDataContentHandler"); 

		String contentType; 
		MimeMessage message; 
		MimeMultipart mimeMultipart; 
		final byte[] bodyConent = "<test/>".getBytes(); 
		InternetHeaders headers = new InternetHeaders(); 
		headers.setHeader("Content-Transfer-Encoding", "binary"); 
		headers.setHeader("Content-Disposition", "attachment; filename=test.xml"); 

		// this works 
		contentType = "application/xml"; 
		message = new MimeMessage(Session.getDefaultInstance(new Properties())); 
		mimeMultipart = new MimeMultipart(); 
		headers.setHeader("Content-Type", contentType); 
		mimeMultipart.addBodyPart(new MimeBodyPart(headers, bodyConent)); 
		message.setContent(mimeMultipart); 
		message.saveChanges(); 
		((MimeMultipart) message.getContent()).getBodyPart(0).getContent(); 

		// will cause java.io.IOException 
		contentType = "application/XML"; 
		message = new MimeMessage(Session.getDefaultInstance(new Properties())); 
		mimeMultipart = new MimeMultipart(); 
		headers.setHeader("Content-Type", contentType); 
		mimeMultipart.addBodyPart(new MimeBodyPart(headers, bodyConent)); 
		message.setContent(mimeMultipart); 
		message.saveChanges(); 
		((MimeMultipart) message.getContent()).getBodyPart(0).getContent(); 

	}

}
