/** * Parse a message and return a simple {@link String} representation of some important fields. * * @param messageBytes the message as {@link java.io.InputStream} * @return String * @throws IOException * @throws MimeException */ private static String messageSummary(InputStream messageBytes) throws IOException, MimeException { MessageBuilder builder = new DefaultMessageBuilder(); Message message = builder.parseMessage(messageBytes); return String.format("\nMessage %s \n" + "Sent by:\t%s\n" + "To:\t%s\n", message.getSubject(), message.getSender(), message.getTo()); } }
private HeaderImpl buildTextHeaders(MailboxMessage message) throws IOException, MimeIOException { DefaultMessageBuilder defaultMessageBuilder = new DefaultMessageBuilder(); defaultMessageBuilder.setMimeEntityConfig(MimeConfig.PERMISSIVE); Message headersMessage = defaultMessageBuilder .parseMessage(message.getHeaderContent()); HeaderImpl headerImpl = new HeaderImpl(); addFrom(headerImpl, headersMessage.getFrom()); addAddressList(headerImpl, headersMessage.getTo()); addAddressList(headerImpl, headersMessage.getCc()); addAddressList(headerImpl, headersMessage.getBcc()); headerImpl.addField(Fields.subject(headersMessage.getSubject())); return headerImpl; }
public Message fromMetaDataWithContent(MetaDataWithContent message) throws MailboxException { org.apache.james.mime4j.dom.Message mimeMessage = parse(message); MessageContent messageContent = extractContent(mimeMessage); Optional<String> htmlBody = messageContent.getHtmlBody(); Optional<String> mainTextContent = mainTextContent(messageContent); Optional<String> textBody = computeTextBodyIfNeeded(messageContent, mainTextContent); String preview = messagePreview.compute(mainTextContent); return Message.builder() .id(message.getMessageId()) .blobId(BlobId.of(blobManager.toBlobId(message.getMessageId()))) .threadId(message.getMessageId().serialize()) .mailboxIds(message.getMailboxIds()) .inReplyToMessageId(getHeader(mimeMessage, "in-reply-to")) .keywords(message.getKeywords()) .subject(Strings.nullToEmpty(mimeMessage.getSubject()).trim()) .headers(toMap(mimeMessage.getHeader().getFields())) .from(firstFromMailboxList(mimeMessage.getFrom())) .to(fromAddressList(mimeMessage.getTo())) .cc(fromAddressList(mimeMessage.getCc())) .bcc(fromAddressList(mimeMessage.getBcc())) .replyTo(fromAddressList(mimeMessage.getReplyTo())) .size(message.getSize()) .date(getDateFromHeaderOrInternalDateOtherwise(mimeMessage, message)) .textBody(textBody) .htmlBody(htmlBody) .preview(preview) .attachments(getAttachments(message.getAttachments())) .build(); }