/** * @param emailMessage {@link EmailMessage} with data. * @param attachments {@link List} of {@link EmailAttachment}s. * @return new {@link MimeBodyPart} with data from emailMessage and attachments. * @throws MessagingException if there is a failure. */ private MimeBodyPart getBodyPart(final EmailMessage emailMessage, final List<EmailAttachment<? extends DataSource>> attachments) throws MessagingException { final MimeBodyPart bodyPart = new MimeBodyPart(); // detect embedded attachments final List<EmailAttachment<? extends DataSource>> embeddedAttachments = filterEmbeddedAttachments(attachments, emailMessage); if (embeddedAttachments.isEmpty()) { // no embedded attachments, just add message setContent(emailMessage, bodyPart); } else { attachments.removeAll(embeddedAttachments); // embedded attachments detected, join them as related final MimeMultipart relatedMultipart = new MimeMultipart(RELATED); final MimeBodyPart messageData = new MimeBodyPart(); setContent(emailMessage, messageData); relatedMultipart.addBodyPart(messageData); addAnyAttachments(embeddedAttachments, relatedMultipart); bodyPart.setContent(relatedMultipart); } return bodyPart; }
/** * Adds message data and attachments. * * @param emailWithData {@link Email} with data * @param msgToSet {@link MimeMessage} to set data into. * @throws MessagingException if there is a failure. */ private void addBodyData(final Email emailWithData, final MimeMessage msgToSet) throws MessagingException { final List<EmailMessage> messages = emailWithData.messages(); final int totalMessages = messages.size(); // Need to use new list since filterEmbeddedAttachments(List) removes attachments from the source List final List<EmailAttachment<? extends DataSource>> attachments = new ArrayList<>(emailWithData.attachments()); if (attachments.isEmpty() && totalMessages == 1) { // special case: no attachments and just one content setContent(messages.get(0), msgToSet); } else { final MimeMultipart multipart = new MimeMultipart(); final MimeMultipart msgMultipart = new MimeMultipart(ALTERNATIVE); multipart.addBodyPart(getBaseBodyPart(msgMultipart)); for (final EmailMessage emailMessage : messages) { msgMultipart.addBodyPart(getBodyPart(emailMessage, attachments)); } addAnyAttachments(attachments, multipart); msgToSet.setContent(multipart); } }
/** * @param emailMessage {@link EmailMessage} with data. * @param attachments {@link List} of {@link EmailAttachment}s. * @return new {@link MimeBodyPart} with data from emailMessage and attachments. * @throws MessagingException if there is a failure. */ private MimeBodyPart getBodyPart(final EmailMessage emailMessage, final List<EmailAttachment<? extends DataSource>> attachments) throws MessagingException { final MimeBodyPart bodyPart = new MimeBodyPart(); // detect embedded attachments final List<EmailAttachment<? extends DataSource>> embeddedAttachments = filterEmbeddedAttachments(attachments, emailMessage); if (embeddedAttachments.isEmpty()) { // no embedded attachments, just add message setContent(emailMessage, bodyPart); } else { attachments.removeAll(embeddedAttachments); // embedded attachments detected, join them as related final MimeMultipart relatedMultipart = new MimeMultipart(RELATED); final MimeBodyPart messageData = new MimeBodyPart(); setContent(emailMessage, messageData); relatedMultipart.addBodyPart(messageData); addAnyAttachments(embeddedAttachments, relatedMultipart); bodyPart.setContent(relatedMultipart); } return bodyPart; }
/** * Adds message data and attachments. * * @param emailWithData {@link Email} with data * @param msgToSet {@link MimeMessage} to set data into. * @throws MessagingException if there is a failure. */ private void addBodyData(final Email emailWithData, final MimeMessage msgToSet) throws MessagingException { final List<EmailMessage> messages = emailWithData.messages(); final int totalMessages = messages.size(); // Need to use new list since filterEmbeddedAttachments(List) removes attachments from the source List final List<EmailAttachment<? extends DataSource>> attachments = new ArrayList<>(emailWithData.attachments()); if (attachments.isEmpty() && totalMessages == 1) { // special case: no attachments and just one content setContent(messages.get(0), msgToSet); } else { final MimeMultipart multipart = new MimeMultipart(); final MimeMultipart msgMultipart = new MimeMultipart(ALTERNATIVE); multipart.addBodyPart(getBaseBodyPart(msgMultipart)); for (final EmailMessage emailMessage : messages) { msgMultipart.addBodyPart(getBodyPart(emailMessage, attachments)); } addAnyAttachments(attachments, multipart); msgToSet.setContent(multipart); } }