Since upgrading from Aspose.Email 19.3 to 20.6 we’ve started to see un-useable attachments being returned for certain emails.
Sample code for extracting attachments:
LoadOptions loadOptions = new EmlLoadOptions();
MapiMessage msg = MapiMessage.load(filename, loadOptions);
System.out.println(StringEscapeUtils.escapeJava(msg.getSubject()));
msg.getAttachments().forEach( attachment -> {
// Output escaped attachment name
System.out.println(String.format("Attachment name: %s", StringEscapeUtils.escapeJava(attachment.getDisplayName())));
// Let's check the attachment method
// Documentation: https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxcmsg/252923d6-dd41-468b-9c57-d3f68051a516
if(attachMethod == 0x00000000) {
System.out.println("Attach method: afNone");
} else if(attachMethod == 0x00000001) {
System.out.println("Attach method: afByValue");
} else if(attachMethod == 0x00000002) {
System.out.println("Attach method: afByReference");
} else if(attachMethod == 0x00000003) {
System.out.println("Attach method: afByReference");
} else if(attachMethod == 0x00000004) {
System.out.println("Attach method: afByReferenceOnly");
} else if(attachMethod == 0x00000005) {
System.out.println("Attach method: afEmbeddedMessage");
} else if(attachMethod == 0x00000006) {
System.out.println("Attach method: afStorage");
} else if(attachMethod == 0x00000007) {
System.out.println("Attach method: afByWebReference");
} else {
System.out.println(String.format("Invalid attach method: %x - not allowed.", attachMethod));
}
// How large
System.out.println(String.format("Attachment Size: %s bytes", attachment.getBinaryData().length));
// Save to disk
attachment.save(attachment.getLongFileName());
When we run this sample email sample-appointment.eml.zip (31.7 KB) we get the following output:
Important Test Meeting 2(Aspose.Email Evaluation)
Attachment name: Unnamed
Attach method: afByValue
Attachment Size: 40 bytes
The resulting Unnamed
attachment is useless and doesn’t represent any useful data.
Also as you can see it is not marked as an inline attachment.
If we run the same code using version 19.3 we get the expected output where the useless attachment is being ignored:
Important Test Meeting 2(Aspose.Email Evaluation)