From 39c1c7f2b18c13efa443b487654dca7a1e1ba31e Mon Sep 17 00:00:00 2001 From: Marvin Rohrbach Date: Tue, 17 Dec 2019 15:37:25 +0100 Subject: [PATCH 1/2] Fix cid handling to use real outlook ContentId Attribute --- .../model/OutlookFileAttachment.java | 22 +++++++++++++++++++ .../model/OutlookMessage.java | 4 +--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookFileAttachment.java b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookFileAttachment.java index 03230eb..b0ac647 100644 --- a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookFileAttachment.java +++ b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookFileAttachment.java @@ -20,6 +20,10 @@ public class OutlookFileAttachment implements OutlookAttachment { * Mime type of the attachment */ private String mimeTag; + /** + * CID of the attachment + */ + private String contentId; /** * The extension of the attachment (may not be set). */ @@ -58,6 +62,9 @@ public void setProperty(final OutlookMessageProperty msgProp) { case "3703": setExtension((String) value); break; + case "3712": + setContentId((String) value); + break; default: // property to ignore, for full list see properties-list.txt } @@ -89,6 +96,21 @@ public String toString() { return (longFilename != null) ? longFilename : filename; } + /** + * Bean getter for {@link #contentId}. + */ + @SuppressWarnings("ElementOnlyUsedFromTestCode") + public String getContentId() { + return contentId; + } + + /** + * Bean setter for {@link #contentId}. + */ + void setContentId(final String contentId) { + this.contentId = contentId; + } + /** * Bean getter for {@link #extension}. */ diff --git a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java index 56c1ffe..e0c7876 100644 --- a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java +++ b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java @@ -313,9 +313,7 @@ public Map fetchCIDMap() { for (final OutlookAttachment attachment : getOutlookAttachments()) { if (attachment instanceof OutlookFileAttachment) { final OutlookFileAttachment fileAttachment = (OutlookFileAttachment) attachment; - if (!tryAddCid(cidMap, html, fileAttachment, fileAttachment.getFilename())) { - tryAddCid(cidMap, html, fileAttachment, fileAttachment.getLongFilename()); - } + tryAddCid(cidMap, html, fileAttachment, fileAttachment.getContentId()); } } } From 9fcef2e7fb5259a9dcaf96e548d7a2e89524ccfc Mon Sep 17 00:00:00 2001 From: Marvin Rohrbach Date: Wed, 18 Dec 2019 10:18:48 +0100 Subject: [PATCH 2/2] Add fallback handling --- .../outlookmessageparser/model/OutlookMessage.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java index e0c7876..b64ad6f 100644 --- a/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java +++ b/src/main/java/org/simplejavamail/outlookmessageparser/model/OutlookMessage.java @@ -313,7 +313,11 @@ public Map fetchCIDMap() { for (final OutlookAttachment attachment : getOutlookAttachments()) { if (attachment instanceof OutlookFileAttachment) { final OutlookFileAttachment fileAttachment = (OutlookFileAttachment) attachment; - tryAddCid(cidMap, html, fileAttachment, fileAttachment.getContentId()); + if (!tryAddCid(cidMap, html, fileAttachment, fileAttachment.getContentId())) { + if (!tryAddCid(cidMap, html, fileAttachment, fileAttachment.getFilename())) { + tryAddCid(cidMap, html, fileAttachment, fileAttachment.getLongFilename()); + } + } } } }