private Optional<InputStream> loadMessageAsBlob(MessageId messageId, MailboxSession mailboxSession) { try { return messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.FULL_CONTENT, mailboxSession) .stream() .map(Throwing.function(message -> message.getFullContent().getInputStream())) .findFirst(); } catch (MailboxException e) { throw new RuntimeException(e); } }
private MailImpl buildMailFromMessage(MessageResult message) throws MessagingException, IOException, MailboxException { return MailImpl.fromMimeMessage(message.getMessageId().serialize(), new MimeMessage( Session.getDefaultInstance(new Properties()), message.getFullContent().getInputStream())); }
@Override public InputStream getMessage(String uid) throws IOException { try { mailboxManager.startProcessingRequest(session); Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.valueOf(uid)).toRange(), FULL_GROUP, session); if (results.hasNext()) { return results.next().getFullContent().getInputStream(); } else { return null; } } catch (MailboxException e) { throw new IOException("Unable to retrieve message for uid " + uid, e); } finally { mailboxManager.endProcessingRequest(session); } }
private FetchResponse.BodyElement content(final MessageResult messageResult, String name, final int[] path, final boolean isBase) throws MailboxException { final FetchResponse.BodyElement result; Content full; if (isBase) { try { full = messageResult.getFullContent(); } catch (IOException e) { throw new MailboxException("Unable to get content", e); } } else { MessageResult.MimePath mimePath = new MimePathImpl(path); full = messageResult.getMimeBody(mimePath); } if (full == null) { full = new EmptyContent(); } result = new ContentBodyElement(name, full); return result; } }
private FetchResponse.BodyElement content(MessageResult messageResult, String name, int[] path, boolean isBase) throws MailboxException { final FetchResponse.BodyElement result; Content full; if (isBase) { try { full = messageResult.getFullContent(); } catch (IOException e) { throw new MailboxException("Unable to get content", e); } } else { MessageResult.MimePath mimePath = new MimePathImpl(path); full = messageResult.getMimeBody(mimePath); } if (full == null) { full = new EmptyContent(); } result = new ContentBodyElement(name, full); return result; } }
public static Builder builderFromMessageResult(MessageResult messageResult) throws MailboxException { Builder builder = builder() .uid(messageResult.getUid()) .modSeq(messageResult.getModSeq()) .size(messageResult.getSize()) .internalDate(messageResult.getInternalDate().toInstant()) .attachments(messageResult.getAttachments()) .mailboxId(messageResult.getMailboxId()); try { return builder.content(messageResult.getFullContent().getInputStream()); } catch (IOException e) { throw new MailboxException("Can't get message full content: " + e.getMessage(), e); } }