public MultipartBuilder addBodyPart(BodyPartBuilder bodyPart) { return this.addBodyPart(bodyPart.build()); }
private Consumer<MessageAttachment> addAttachment(MultipartBuilder builder) { return att -> { try { builder.addBodyPart(attachmentBodyPart(att)); } catch (IOException e) { LOGGER.error("Error while creating attachment", e); throw new RuntimeException(e); } }; }
private void addHtml(MultipartBuilder builder, Optional<String> htmlBody) throws IOException { if (htmlBody.isPresent()) { builder.addBodyPart(BodyPartBuilder.create() .use(bodyFactory) .setBody(htmlBody.get(), StandardCharsets.UTF_8) .setContentType(HTML_MEDIA_TYPE, UTF_8_CHARSET) .setContentTransferEncoding(QUOTED_PRINTABLE)); } }
private void addText(MultipartBuilder builder, Optional<String> textBody) throws IOException { if (textBody.isPresent()) { builder.addBodyPart(BodyPartBuilder.create() .use(bodyFactory) .setBody(textBody.get(), StandardCharsets.UTF_8) .setContentType(PLAIN_TEXT_MEDIA_TYPE, UTF_8_CHARSET) .setContentTransferEncoding(QUOTED_PRINTABLE)); } }
public MultipartBuilder addTextPart(String text, Charset charset) throws IOException { Charset cs = charset != null ? charset : Charsets.ISO_8859_1; TextBody body = bodyFactory != null ? bodyFactory.textBody( InputStreams.create(text, cs), cs.name()) : BasicBodyFactory.INSTANCE.textBody(text, cs); BodyPart bodyPart = BodyPartBuilder.create() .setBody(body) .setContentType("text/plain", new NameValuePair("charset", cs.name())) .setContentTransferEncoding(Charsets.US_ASCII.equals(cs) ? "7bit" : "quoted-printable") .build(); return addBodyPart(bodyPart); }
private void addBody(CreationMessage newMessage, MultipartBuilder builder) throws IOException { if (newMessage.getHtmlBody().isPresent() && newMessage.getTextBody().isPresent()) { Multipart body = createMultipartAlternativeBody(newMessage); builder.addBodyPart(BodyPartBuilder.create().setBody(body)); } else { addText(builder, newMessage.getTextBody()); addHtml(builder, newMessage.getHtmlBody()); } }
@Test public void extractShouldReturnFirstNonAttachmentPartWhenMultipartMixed() throws IOException { Multipart multipart = MultipartBuilder.create("mixed") .addBodyPart(textAttachment) .addBodyPart(htmlPart) .addBodyPart(textPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); assertThat(actual.getTextBody()).isEmpty(); }
private Multipart asMime4JMultipart() throws IOException { MultipartBuilder builder = MultipartBuilder.create(REPORT_SUB_TYPE); builder.addContentTypeParameter(new NameValuePair("report-type", DISPOSITION_NOTIFICATION_REPORT_TYPE)); builder.addBodyPart(BodyPartBuilder.create() .use(new BasicBodyFactory()) .setBody(humanReadableText, Charsets.UTF_8) .setContentType("text/plain", UTF_8_CHARSET)); builder.addBodyPart(BodyPartBuilder.create() .use(new BasicBodyFactory()) .setBody(report.formattedValue(), Charsets.UTF_8) .setContentType(DISPOSITION_CONTENT_TYPE, UTF_8_CHARSET)); return builder.build(); }
public MultipartBuilder addBinaryPart(byte[] bin, String mimeType) throws IOException { BinaryBody body = bodyFactory != null ? bodyFactory.binaryBody(InputStreams.create(bin)) : BasicBodyFactory.INSTANCE.binaryBody(bin); BodyPart bodyPart = BodyPartBuilder.create() .setBody(body) .setContentType(mimeType != null ? mimeType : "application/octet-stream") .setContentTransferEncoding("base64") .build(); return addBodyPart(bodyPart); }
@Test void extractShouldReturnHtmlAndTextWhenMultipartAlternative() throws IOException { Multipart multipart = MultipartBuilder.create("alternative") .addBodyPart(textPart) .addBodyPart(htmlPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).contains(TEXT_CONTENT); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); }
@Test public void extractShouldReturnFirstPartOnlyWhenMultipartMixedAndFirstPartIsHtml() throws IOException { Multipart multipart = MultipartBuilder.create("mixed") .addBodyPart(htmlPart) .addBodyPart(textPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); }
@Test void extractShouldReturnFirstPartOnlyWhenMultipartMixedAndFirstPartIsHtml() throws IOException { Multipart multipart = MultipartBuilder.create("mixed") .addBodyPart(htmlPart) .addBodyPart(textPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); }
@Test void extractShouldReturnHtmlWhenMultipartAlternativeWithoutPlainPart() throws IOException { Multipart multipart = MultipartBuilder.create("alternative") .addBodyPart(htmlPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); }
@Test public void extractShouldReturnEmptyWhenMultipartMixedAndFirstPartIsATextAttachment() throws IOException { Multipart multipart = MultipartBuilder.create("mixed") .addBodyPart(textAttachment) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).isEmpty(); }
@Test void extractShouldReturnHtmlWhenMultipartRelated() throws IOException { Multipart multipart = MultipartBuilder.create("related") .addBodyPart(htmlPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); }
@Test public void extractShouldReturnHtmlWhenMultipartRelated() throws IOException { Multipart multipart = MultipartBuilder.create("related") .addBodyPart(htmlPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); }
@Test void extractShouldReturnTextWhenMultipartAlternativeWithoutHtmlPart() throws IOException { Multipart multipart = MultipartBuilder.create("alternative") .addBodyPart(textPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).contains(TEXT_CONTENT); assertThat(actual.getHtmlBody()).isEmpty(); }
@Test void extractShouldReturnEmptyWhenMultipartMixedAndFirstPartIsATextAttachment() throws IOException { Multipart multipart = MultipartBuilder.create("mixed") .addBodyPart(textAttachment) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).isEmpty(); }
@Test public void extractShouldReturnHtmlWhenMultipartAlternativeWithoutPlainPart() throws IOException { Multipart multipart = MultipartBuilder.create("alternative") .addBodyPart(htmlPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).isEmpty(); assertThat(actual.getHtmlBody()).contains(HTML_CONTENT); }
@Test public void extractShouldReturnTextWhenMultipartAlternativeWithoutHtmlPart() throws IOException { Multipart multipart = MultipartBuilder.create("alternative") .addBodyPart(textPart) .build(); Message message = Message.Builder.of() .setBody(multipart) .build(); MessageContent actual = testee.extract(message); assertThat(actual.getTextBody()).contains(TEXT_CONTENT); assertThat(actual.getHtmlBody()).isEmpty(); }