public ImmutableMailboxMessage from(MailboxId mailboxId, MailboxMessage message) throws MailboxException {
try {
return new ImmutableMailboxMessage(message.getMessageId(),
message.getInternalDate(),
IOUtils.toByteArray(message.getBodyContent()),
message.getMediaType(),
message.getSubType(),
message.getBodyOctets(),
message.getFullContentOctets(),
message.getFullContentOctets() - message.getBodyOctets(),
message.getTextualLineCount(),
IOUtils.toByteArray(message.getHeaderContent()),
ImmutableList.copyOf(message.getProperties()),
attachments(message),
mailboxId,
message.getUid(),
message.getModSeq(),
message.isAnswered(),
message.isDeleted(),
message.isDraft(),
message.isFlagged(),
message.isRecent(),
message.isSeen(),
message.createFlags().getUserFlags());
} catch (IOException e) {
throw new MailboxException("Unable to parse message", e);
}
}