package tech.blueglacier.manager; import tech.blueglacier.email.Email; import tech.blueglacier.parser.CustomContentHandler; import org.apache.james.mime4j.MimeException; import org.apache.james.mime4j.codec.DecodeMonitor; import org.apache.james.mime4j.message.DefaultBodyDescriptorBuilder; import org.apache.james.mime4j.parser.ContentHandler; import org.apache.james.mime4j.parser.MimeStreamParser; import org.apache.james.mime4j.stream.BodyDescriptorBuilder; import org.apache.james.mime4j.stream.MimeConfig; import java.io.IOException; import java.io.InputStream; public class EmailParseManager { InputStream rawEmailFile; ContentHandler contentHandler; public EmailParseManager(InputStream rawEmailFile) { this.rawEmailFile = rawEmailFile; contentHandler = new CustomContentHandler(); } public Email getParsedEmail() throws MimeException, IOException { MimeConfig mime4jParserConfig = MimeConfig.DEFAULT; BodyDescriptorBuilder bodyDescriptorBuilder = new DefaultBodyDescriptorBuilder(); MimeStreamParser mime4jParser = new MimeStreamParser(mime4jParserConfig,DecodeMonitor.SILENT,bodyDescriptorBuilder); mime4jParser.setContentDecoding(true); mime4jParser.setContentHandler(contentHandler); mime4jParser.parse(rawEmailFile); return ((CustomContentHandler)contentHandler).getEmail(); } }