List of usage examples for org.apache.poi.hsmf MAPIMessage getMessageDate
public Calendar getMessageDate() throws ChunkNotFoundException
From source file:com.github.n_i_e.dirtreedb.MsgLister.java
License:Apache License
@Override protected PathEntry getNext() throws IOException { try {/* w ww . java 2 s . c o m*/ if (content == null) { MAPIMessage msg; msg = new MAPIMessage(inf); date = msg.getMessageDate() == null ? 0L : msg.getMessageDate().getTimeInMillis(); subject = msg.getSubject(); String s = subjectToFilename(subject, "text/plain", 1); s = s.replace("\\", "/"); Assertion.assertAssertionError(!s.equals("")); PathEntry next_entry = new PathEntry(getBasePath().getPath() + "/" + s, PathEntry.COMPRESSEDFILE); next_entry.setDateLastModified(date); next_entry.setStatus(PathEntry.DIRTY); byte[] body = getByteArrayWithBom(msg.getTextBody()); next_entry.setCompressedSize(body.length); next_entry.setSize(next_entry.getSize()); instream = new ByteArrayInputStreamWithCascadingClose(body); if (isCsumRequested()) { next_entry.setCsum(instream); } content = msg.getAttachmentFiles(); return next_entry; } else { AttachmentChunks part = null; byte[] data = null; while (data == null) { if (count >= content.length) { return null; } part = content[count]; try { data = part.attachData.getValue(); } catch (NullPointerException e) { data = null; count++; } } String filename; try { filename = part.attachFileName.getValue(); } catch (NullPointerException e) { filename = String.valueOf(count); } filename = filename.replace("\\", "/"); if (filename.equals("")) { filename = String.valueOf(count); } PathEntry next_entry = new PathEntry(getBasePath().getPath() + "/" + filename, PathEntry.COMPRESSEDFILE); next_entry.setDateLastModified(date); next_entry.setStatus(PathEntry.DIRTY); next_entry.setCompressedSize(data.length); next_entry.setSize(data.length); instream = new ByteArrayInputStreamWithCascadingClose(data); if (isCsumRequested()) { next_entry.setCsumAndClose(instream); } count++; return next_entry; } } catch (ChunkNotFoundException e) { return null; } }
From source file:com.jaeksoft.searchlib.parser.MapiMsgParser.java
License:Open Source License
@Override protected void parseContent(StreamLimiter streamLimiter, LanguageEnum lang) throws IOException, SearchLibException { MAPIMessage msg = new MAPIMessage(streamLimiter.getNewInputStream()); msg.setReturnNullOnMissingChunk(true); ParserResultItem result = getNewParserResultItem(); try {/*ww w . j a v a 2 s . c o m*/ result.addField(ParserFieldEnum.email_display_from, msg.getDisplayFrom()); result.addField(ParserFieldEnum.email_display_to, msg.getDisplayTo()); result.addField(ParserFieldEnum.email_display_cc, msg.getDisplayCC()); result.addField(ParserFieldEnum.email_display_bcc, msg.getDisplayBCC()); result.addField(ParserFieldEnum.subject, msg.getSubject()); result.addField(ParserFieldEnum.htmlSource, msg.getHtmlBody()); result.addField(ParserFieldEnum.content, msg.getTextBody()); result.addField(ParserFieldEnum.creation_date, msg.getMessageDate()); result.addField(ParserFieldEnum.email_conversation_topic, msg.getConversationTopic()); RecipientChunks[] recipientChuncksList = msg.getRecipientDetailsChunks(); if (recipientChuncksList != null) { for (RecipientChunks recipientChunks : recipientChuncksList) { result.addField(ParserFieldEnum.email_recipient_name, recipientChunks.getRecipientName()); result.addField(ParserFieldEnum.email_recipient_address, recipientChunks.getRecipientEmailAddress()); } } if (StringUtils.isEmpty(msg.getHtmlBody())) result.langDetection(10000, ParserFieldEnum.content); else result.langDetection(10000, ParserFieldEnum.htmlSource); } catch (ChunkNotFoundException e) { Logging.warn(e); } }
From source file:com.openkm.util.MailUtils.java
License:Open Source License
/** * Convert Outlook Message to Mail// w w w. j ava2 s. co m */ public static Mail messageToMail(MAPIMessage msg) throws MessagingException, IOException { com.openkm.bean.Mail mail = new com.openkm.bean.Mail(); Calendar receivedDate = Calendar.getInstance(); Calendar sentDate = Calendar.getInstance(); try { // Can be void if (msg.getMessageDate() != null) { receivedDate.setTime(msg.getMessageDate().getTime()); } // Can be void if (msg.getMessageDate() != null) { sentDate.setTime(msg.getMessageDate().getTime()); } if (msg.getRtfBody() != null) { try { // JEditorPaneRTF2HTMLConverter converter = new JEditorPaneRTF2HTMLConverter(); // mail.setContent(converter.rtf2html(msg.getBodyRTF())); ByteArrayInputStream bais = new ByteArrayInputStream(msg.getRtfBody().getBytes()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DocConverter.getInstance().rtf2html(bais, baos); mail.setMimeType(MimeTypeConfig.MIME_HTML); mail.setContent(baos.toString().replace("<BR>", "")); IOUtils.closeQuietly(bais); IOUtils.closeQuietly(baos); } catch (Exception e) { throw new MessagingException(e.getMessage(), e); } } else if (msg.getHtmlBody() != null) { mail.setMimeType(MimeTypeConfig.MIME_HTML); mail.setContent(msg.getHtmlBody()); } else if (msg.getTextBody() != null) { mail.setMimeType(MimeTypeConfig.MIME_TEXT); mail.setContent(msg.getTextBody()); } else { mail.setMimeType(MimeTypeConfig.MIME_UNDEFINED); } if (msg.getDisplayTo() != null) { mail.setTo(recipientToString(msg.getDisplayTo())); } else { mail.setTo(new String[] {}); } StringBuilder sb = new StringBuilder(); for (String header : msg.getHeaders()) { sb.append(header).append("\n"); } // Need to replace 0x00 because PostgreSQL does not accept string containing 0x00 // Need to remove Unicode surrogate because of MySQL => SQL Error: 1366, SQLState: HY000 String subject = FormatUtil.trimUnicodeSurrogates(FormatUtil.fixUTF8(msg.getSubject())); mail.setSize(mail.getContent().length()); mail.setSubject((subject == null || subject.isEmpty()) ? NO_SUBJECT : subject); mail.setFrom(msg.getDisplayFrom()); mail.setCc(recipientToString(msg.getDisplayCC())); mail.setBcc(recipientToString(msg.getDisplayBCC())); mail.setReceivedDate(receivedDate); mail.setSentDate(sentDate); } catch (ChunkNotFoundException e) { throw new MessagingException(e.getMessage(), e); } return mail; }
From source file:com.opensearchserver.extractor.parser.MapiMsg.java
License:Apache License
@Override protected void parseContent(InputStream inputStream, String extension, String mimeType) throws Exception { MAPIMessage msg = new MAPIMessage(inputStream); msg.setReturnNullOnMissingChunk(true); ParserDocument document = getNewParserDocument(); document.add(FROM, msg.getDisplayFrom()); document.add(RECIPIENT_TO, msg.getDisplayTo()); document.add(RECIPIENT_CC, msg.getDisplayCC()); document.add(RECIPIENT_BCC, msg.getDisplayBCC()); document.add(SUBJECT, msg.getSubject()); document.add(HTML_CONTENT, msg.getHtmlBody()); document.add(PLAIN_CONTENT, msg.getTextBody()); document.add(MESSAGE_DATE, msg.getMessageDate()); document.add(CONVERSATION_TOPIC, msg.getConversationTopic()); if (StringUtils.isEmpty(msg.getHtmlBody())) document.add(LANG_DETECTION, languageDetection(document, PLAIN_CONTENT, 10000)); else// www . j a va 2s .c o m document.add(LANG_DETECTION, languageDetection(document, HTML_CONTENT, 10000)); // TODO manage attachments }
From source file:com.qwazr.library.poi.MapiMsgParser.java
License:Apache License
@Override public void parseContent(final MultivaluedMap<String, String> parameters, final InputStream inputStream, final String extension, final String mimeType, final ParserResultBuilder resultBuilder) throws Exception { final MAPIMessage msg = new MAPIMessage(inputStream); msg.setReturnNullOnMissingChunk(true); final ParserFieldsBuilder metas = resultBuilder.metas(); metas.set(MIME_TYPE, DEFAULT_MIMETYPES[0]); final ParserFieldsBuilder document = resultBuilder.newDocument(); document.add(FROM, msg.getDisplayFrom()); document.add(RECIPIENT_TO, msg.getDisplayTo()); document.add(RECIPIENT_CC, msg.getDisplayCC()); document.add(RECIPIENT_BCC, msg.getDisplayBCC()); document.add(SUBJECT, msg.getSubject()); document.add(HTML_CONTENT, msg.getHtmlBody()); document.add(PLAIN_CONTENT, msg.getTextBody()); document.add(MESSAGE_DATE, msg.getMessageDate()); document.add(CONVERSATION_TOPIC, msg.getConversationTopic()); if (StringUtils.isEmpty(msg.getHtmlBody())) document.add(LANG_DETECTION, languageDetection(document, PLAIN_CONTENT, 10000)); else//from w w w . jav a 2 s. c om document.add(LANG_DETECTION, languageDetection(document, HTML_CONTENT, 10000)); // TODO manage attachments }
From source file:org.alfresco.repo.content.transform.MSGParser.java
License:Apache License
/** * Process header.//from w ww. ja v a 2 s.co m * * @param msg * the msg * @param metadata * the metadata * @param xhtml * the xhtml * @throws Exception * the exception */ private void processHeader(MAPIMessage msg, Metadata metadata, XHTMLContentHandler xhtml) throws Exception { StringChunk subjectChunk = msg.getMainChunks().subjectChunk; if (msg.has7BitEncodingStrings()) { CharsetDetector detector = new CharsetDetector(); detector.setText(subjectChunk.getRawValue()); CharsetMatch detect = detector.detect(); if (detect.getConfidence() >= 20) { subjectChunk.set7BitEncoding(detect.getName()); } } String subject = subjectChunk.getValue(); String from = msg.getDisplayFrom(); metadata.set(DublinCore.CREATOR, from); metadata.set(Metadata.MESSAGE_FROM, from); metadata.set(Metadata.MESSAGE_TO, msg.getDisplayTo()); metadata.set(Metadata.MESSAGE_CC, msg.getDisplayCC()); metadata.set(Metadata.MESSAGE_BCC, msg.getDisplayBCC()); metadata.set(DublinCore.TITLE, subject); metadata.set(DublinCore.SUBJECT, msg.getConversationTopic()); try { for (String recipientAddress : msg.getRecipientEmailAddressList()) { if (recipientAddress != null) metadata.add(Metadata.MESSAGE_RECIPIENT_ADDRESS, recipientAddress); } } catch (ChunkNotFoundException he) { } // Will be fixed in POI 3.7 Final // Date - try two ways to find it // First try via the proper chunk if (msg.getMessageDate() != null) { metadata.set(DublinCore.DATE, msg.getMessageDate().getTime()); metadata.set(Office.CREATION_DATE, msg.getMessageDate().getTime()); metadata.set(Office.SAVE_DATE, msg.getMessageDate().getTime()); } else { try { // Failing that try via the raw headers String[] headers = msg.getHeaders(); if (headers != null && headers.length > 0) { for (String header : headers) { if (header.toLowerCase().startsWith("date:")) { String date = header.substring(header.indexOf(':') + 1).trim(); // See if we can parse it as a normal mail date try { Date d = MboxParser.parseDate(date); metadata.set(DublinCore.DATE, d); metadata.set(Office.CREATION_DATE, d); metadata.set(Office.SAVE_DATE, d); } catch (ParseException e) { // Store it as-is, and hope for the best... metadata.set(DublinCore.DATE, date); metadata.set(Office.CREATION_DATE, date); metadata.set(Office.SAVE_DATE, date); } break; } } } } catch (ChunkNotFoundException he) { // We can't find the date, sorry... } } xhtml.element("h1", subject); // Output the from and to details in text, as you // often want them in text form for searching xhtml.startElement("dl"); if (from != null) { header(xhtml, "From", from); } header(xhtml, "To", msg.getDisplayTo()); header(xhtml, "Cc", msg.getDisplayCC()); header(xhtml, "Bcc", msg.getDisplayBCC()); try { header(xhtml, "Recipients", msg.getRecipientEmailAddress()); } catch (ChunkNotFoundException e) { } List<String> attachmentList = new ArrayList<String>(); // // prepare attachments prepareExtractMultipart(xhtml, message, attachmentList); if (attachmentList.size() > 0) { header(xhtml, "Attachments", attachmentList.toString()); } xhtml.endElement("dl"); }
From source file:org.silverpeas.core.mail.MsgMailExtractorIntegrationTest.java
License:Open Source License
/** * Gets the reception date of email.//from w w w. ja va 2 s. c o m * * @param msg * @return * @throws Exception */ protected static Date getMessageDate(MAPIMessage msg) throws Exception { Calendar messageDate = msg.getMessageDate(); if (messageDate == null) { return extractDateOfReception(msg); } return messageDate.getTime(); }