import javax.activation.CommandMap; import javax.activation.MailcapCommandMap; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.xml.soap.AttachmentPart; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPMessage; import java.util.Properties; public class Test { String host = null; String user = ""; String password = null; String from = null; String to = null; public static void main(String[] args) { Test t = new Test(); t.user = "miroslav.kos@oracle.com"; t.from = "miroslav.kos@oracle.com"; t.to = "miroslav.kos@oracle.com"; t.user = "miroslav.kos@oracle.com"; t.password = "topsecret"; t.host = "stbeehive.oracle.com"; t.sendMail(); //this works t.addSoapAttachement(); t.sendMail(); //after addAttachmentPart to soapmessage it do not work workaroundJAFSetup(); t.sendMail(); //after workaround works again } void addSoapAttachement() { try { MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage message = messageFactory.createMessage(); AttachmentPart a = message.createAttachmentPart(); a.setContentType("binary/octet-stream"); message.addAttachmentPart(a); } catch (SOAPException e) { e.printStackTrace(); } } void sendMail() { Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); Session session = Session.getInstance(props); session.setDebug(true); // Define message MimeMessage message = new MimeMessage(session); try { message.setFrom(new InternetAddress(from)); message.addRecipients(Message.RecipientType.TO, to); message.setSubject("das ist ein multipart test"); Multipart multipart = new MimeMultipart(); BodyPart messageBodyPart1 = new MimeBodyPart(); messageBodyPart1.setText("bitte auch diesen Content senden"); multipart.addBodyPart(messageBodyPart1); BodyPart messageBodyPart2 = new MimeBodyPart(); messageBodyPart2.setContent("bitte auch diesen Content senden
ciau", "text/html; charset=UTF-8"); multipart.addBodyPart(messageBodyPart2); message.setContent(multipart); /* Transport tr = session.getTransport("smtp"); tr.connect(host,user, password); tr.sendMessage(message,InternetAddress.parse(to)); tr.close(); */ message.writeTo(System.out); } catch (Throwable e) { e.printStackTrace(); } } public static void workaroundJAFSetup() { MailcapCommandMap mailMap = (MailcapCommandMap) CommandMap.getDefaultCommandMap(); mailMap.addMailcap("multipart/mixed;;x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); } }