public InputStream getContent () throws IOException { try { return m_aMsg.getInputStream (); } catch (final MessagingException ex) { throw new IOException ("Error reading MIME message", ex); } }
/** * @see org.apache.james.protocols.smtp.MailEnvelope#getMessageInputStream() */ public InputStream getMessageInputStream() throws Exception { return mail.getMessage().getInputStream(); }
/** * @see javax.mail.Part#getInputStream() */ public InputStream getInputStream() throws IOException, MessagingException { return getWrappedMessage().getInputStream(); }
public MimeMessageBuilder setMultipartWithSubMessage(MimeMessage mimeMessage) throws MessagingException, IOException { return setMultipartWithBodyParts( new MimeBodyPart( new InternetHeaders(new ByteArrayInputStream("Content-Type: multipart/mixed".getBytes(StandardCharsets.US_ASCII))), IOUtils.toByteArray(mimeMessage.getInputStream()))); }
public MimeMessageBuilder setMultipartWithSubMessage(MimeMessage mimeMessage) throws MessagingException, IOException { return setMultipartWithBodyParts( new MimeBodyPart( new InternetHeaders(new ByteArrayInputStream("Content-Type: multipart/mixed".getBytes(StandardCharsets.US_ASCII))), IOUtils.toByteArray(mimeMessage.getInputStream()))); }
public String getMessageRawText() { MimeMessage message = getMessage(); try { return getTextFromStream(message.getInputStream()); } catch (Exception e) { Debug.logError(e, module); return null; } }
@Test public void fromShouldNotWriteAMultipartWhenOnlyPlainText() throws Exception { assertThat(IOUtils.toString( mimeMessageBodyGenerator.from(original, Optional.of("Plain text"), Optional.empty()) .getInputStream(), StandardCharsets.UTF_8)) .isEqualTo("Plain text"); verifyZeroInteractions(htmlTextExtractor); }
@Test public void fromShouldUseEmptyTextWhenNoPlainTextNorHtmlBody() throws Exception { String rowContent = IOUtils.toString(mimeMessageBodyGenerator.from(original, Optional.empty(), Optional.empty()) .getInputStream(), StandardCharsets.UTF_8); assertThat(rowContent).isEmpty(); }
@Test public void fromShouldPreservePreviouslySetHeaders() throws Exception { String subject = "Important, I should be kept"; original.setHeader("Subject", subject); mimeMessageBodyGenerator.from(original, Optional.of("Plain text"), Optional.empty()) .getInputStream(); assertThat(original.getSubject()).isEqualTo(subject); verifyZeroInteractions(htmlTextExtractor); }
@Test public void learnAsSpamShouldReturnTrueWhenLearningWorks() throws Exception { MimeMessage mimeMessage = MimeMessageUtil.mimeMessageFromStream( ClassLoader.getSystemResourceAsStream("spamassassin_db/spam/spam2")); boolean result = testee.learnAsSpam(mimeMessage.getInputStream(), USER); assertThat(result).isTrue(); }
@Test public void learnAsHamShouldReturnTrueWhenLearningWorks() throws Exception { MimeMessage mimeMessage = MimeMessageUtil.mimeMessageFromStream( ClassLoader.getSystemResourceAsStream("spamassassin_db/ham/ham2")); boolean result = testee.learnAsHam(mimeMessage.getInputStream(), USER); assertThat(result).isTrue(); }
@Test public void fromShouldProvideAPlainTextVersionWhenOnlyHtml() throws Exception { String htmlText = "<p>HTML text</p>"; String plainText = "Plain text"; when(htmlTextExtractor.toPlainText(htmlText)).thenReturn(plainText); String rowContent = IOUtils.toString( mimeMessageBodyGenerator.from(original, Optional.empty(), Optional.of(htmlText)) .getInputStream(), StandardCharsets.UTF_8); assertThat(rowContent).containsSequence(htmlText); assertThat(rowContent).containsSequence(plainText); }
@Test public void scanMailShouldMarkAsHamWhenMessageAlreadyLearnedAsHam() throws Exception { MimeMessage mimeMessage = MimeMessageUtil.mimeMessageFromStream( ClassLoader.getSystemResourceAsStream("spamassassin_db/ham/ham1")); testee.learnAsHam(mimeMessage.getInputStream(), USER); SpamAssassinResult result = testee.scanMail(mimeMessage, USER); assertThat(result.getHeadersAsAttribute().get(SpamAssassinResult.FLAG_MAIL_ATTRIBUTE_NAME)).isEqualTo("NO"); }
@Override public boolean isInBodyText(List<String> phrasesCaseInsensitive) throws SieveMailException { try { return MessageMatcher.builder() .contentTypes(Lists.newArrayList("text/plain")) .includeHeaders(false) .caseInsensitive(false) .searchContents(Lists.transform(phrasesCaseInsensitive, s -> s)).build() .messageMatches(getMail().getMessage().getInputStream()); } catch (Exception e) { throw new SieveMailException("Error searching in the mail content", e); } }
@Override public boolean isInBodyRaw(List<String> phrasesCaseInsensitive) throws SieveMailException { try { return MessageMatcher.builder() .includeHeaders(false) .caseInsensitive(false) .ignoringMime(true) .searchContents(Lists.transform(phrasesCaseInsensitive, s -> s)).build() .messageMatches(getMail().getMessage().getInputStream()); } catch (Exception e) { throw new SieveMailException("Error searching in the mail content", e); } }
@Override public boolean isInBodyContent(List<String> contentTypes, List<String> phrasesCaseInsensitive) throws SieveMailException { try { return MessageMatcher.builder() .contentTypes(contentTypes) .includeHeaders(false) .caseInsensitive(false) .searchContents(Lists.transform(phrasesCaseInsensitive, s -> s)).build() .messageMatches(getMail().getMessage().getInputStream()); } catch (Exception e) { throw new SieveMailException("Error searching in the mail content", e); } }
@Override public boolean isMdnSentAutomatically(Mail mail) throws MessagingException { ResultCollector resultCollector = new ResultCollector(false); MimeStreamParser parser = new MimeStreamParser(MimeConfig.PERMISSIVE); parser.setContentHandler(createMdnContentHandler(resultCollector)); try { parser.parse(mail.getMessage().getInputStream()); } catch (MimeException e) { throw new MessagingException("Can not parse Mime", e); } catch (IOException e) { throw new MessagingException("Can not read content", e); } return resultCollector.getResult(); }
private void mailTestText(final String text) { MailMessage message = exampleMessage(); message.setText(text); testSuccess(mailClientLogin(), message, () -> { final MimeMessage mimeMessage = wiser.getMessages().get(0).getMimeMessage(); testContext.assertEquals(text, TestUtils.conv2nl(TestUtils.inputStreamToString(mimeMessage.getInputStream()))); }); }
@Test public void mailTestMissingNL(TestContext testContext) { this.testContext=testContext; MailMessage message = exampleMessage(); // the protocol adds a newline at the end if there isn't one message.setText("."); testSuccess(mailClientLogin(), message, () -> { final MimeMessage mimeMessage = wiser.getMessages().get(0).getMimeMessage(); testContext.assertEquals(".\n", TestUtils.conv2nl(TestUtils.inputStreamToString(mimeMessage.getInputStream()))); }); }
protected AdditionalAsserts assertExampleMessage() { return () -> { final WiserMessage message = wiser.getMessages().get(0); testContext.assertEquals("from@example.com", message.getEnvelopeSender()); final MimeMessage mimeMessage = message.getMimeMessage(); assertThat(mimeMessage.getContentType(), containsString("text/plain")); testContext.assertEquals("Subject", mimeMessage.getSubject()); testContext.assertEquals("Message\n", TestUtils.conv2nl(TestUtils.inputStreamToString(mimeMessage.getInputStream()))); }; }