/* String parts of Outlook Messages Attachments that are currently known */
public static final int ATTACH_DATA = 0x3701;
+ // 0x3702 might be "attach encoding"
public static final int ATTACH_EXTENSION = 0x3703;
public static final int ATTACH_FILENAME = 0x3704;
+ // 0x3705 might be "attach method"
public static final int ATTACH_LONG_FILENAME = 0x3707;
+ public static final int ATTACH_RENDERING_WMF = 0x3709;
+ // 0x370B might be "rendering position"
public static final int ATTACH_MIME_TAG = 0x370E;
public ByteChunk attachData;
public StringChunk attachFileName;
public StringChunk attachLongFileName;
public StringChunk attachMimeTag;
+ /**
+ * This is in WMF Format. You'll probably want to pass it
+ * to Apache Batik to turn it into a SVG that you can
+ * then display.
+ */
+ public ByteChunk attachRenderingWMF;
/**
* What the POIFS name of this attachment is.
case ATTACH_MIME_TAG:
attachMimeTag = (StringChunk)chunk;
break;
+ case ATTACH_RENDERING_WMF:
+ attachRenderingWMF = (ByteChunk)chunk;
}
// And add to the main list
package org.apache.poi.hsmf;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.util.Iterator;
-import java.util.Map;
import junit.framework.TestCase;
-import org.apache.poi.hsmf.MAPIMessage;
+import org.apache.poi.POIDataSamples;
import org.apache.poi.hsmf.datatypes.AttachmentChunks;
import org.apache.poi.hsmf.exceptions.ChunkNotFoundException;
-import org.apache.poi.POIDataSamples;
/**
* Tests to verify that we can read attachments from msg file
* @author Nicolas Bureau
*/
public class TestFileWithAttachmentsRead extends TestCase {
- private MAPIMessage mapiMessage;
+ private MAPIMessage mapiMessage;
- /**
- * Initialize this test, load up the attachment_test_msg.msg mapi message.
- *
- * @throws Exception
- */
- public TestFileWithAttachmentsRead() throws IOException {
- POIDataSamples samples = POIDataSamples.getHSMFInstance();
- this.mapiMessage = new MAPIMessage(samples.openResourceAsStream("attachment_test_msg.msg"));
- }
+ /**
+ * Initialize this test, load up the attachment_test_msg.msg mapi message.
+ *
+ * @throws Exception
+ */
+ public TestFileWithAttachmentsRead() throws IOException {
+ POIDataSamples samples = POIDataSamples.getHSMFInstance();
+ this.mapiMessage = new MAPIMessage(samples.openResourceAsStream("attachment_test_msg.msg"));
+ }
- /**
- * Test to see if we can retrieve attachments.
- *
- * @throws ChunkNotFoundException
- *
- */
- // public void testReadDisplayCC() throws ChunkNotFoundException {
- public void testRetrieveAttachments() {
- AttachmentChunks[] attachments = mapiMessage.getAttachmentFiles();
- int obtained = attachments.length;
- int expected = 2;
+ /**
+ * Test to see if we can retrieve attachments.
+ *
+ * @throws ChunkNotFoundException
+ *
+ */
+ public void testRetrieveAttachments() {
+ AttachmentChunks[] attachments = mapiMessage.getAttachmentFiles();
+ int obtained = attachments.length;
+ int expected = 2;
- TestCase.assertEquals(obtained, expected);
- }
+ TestCase.assertEquals(obtained, expected);
+ }
- /**
- * Test to see if attachments are not empty.
- *
- * @throws ChunkNotFoundException
- *
- */
- public void testReadAttachments() throws IOException {
+ /**
+ * Test to see if attachments are not empty.
+ */
+ public void testReadAttachments() throws IOException {
AttachmentChunks[] attachments = mapiMessage.getAttachmentFiles();
- for (AttachmentChunks attachment : attachments) {
- assertTrue(attachment.attachFileName.getValue().length() > 0);
+ // Basic checks
+ for (AttachmentChunks attachment : attachments) {
+ assertTrue(attachment.attachFileName.getValue().length() > 0);
assertTrue(attachment.attachLongFileName.getValue().length() > 0);
assertTrue(attachment.attachExtension.getValue().length() > 0);
- assertTrue(attachment.attachMimeTag.getValue().length() > 0);
- }
-
- // TODO better checking
- }
+ if(attachment.attachMimeTag != null) {
+ assertTrue(attachment.attachMimeTag.getValue().length() > 0);
+ }
+ }
+
+ AttachmentChunks attachment;
+
+ // Now check in detail
+ attachment = mapiMessage.getAttachmentFiles()[0];
+ assertEquals("TEST-U~1.DOC", attachment.attachFileName.toString());
+ assertEquals("test-unicode.doc", attachment.attachLongFileName.toString());
+ assertEquals(".doc", attachment.attachExtension.getValue());
+ assertEquals(null, attachment.attachMimeTag);
+ assertEquals(24064, attachment.attachData.getValue().length);
+ attachment = mapiMessage.getAttachmentFiles()[1];
+ assertEquals("pj1.txt", attachment.attachFileName.toString());
+ assertEquals("pj1.txt", attachment.attachLongFileName.toString());
+ assertEquals(".txt", attachment.attachExtension.getValue());
+ assertEquals(null, attachment.attachMimeTag);
+ assertEquals(89, attachment.attachData.getValue().length);
+ }
}