Repository: james-project Updated Branches: refs/heads/master b87c93905 -> 03be8a460
JAMES-1794 Handle attachments in alternative part Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/03be8a46 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/03be8a46 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/03be8a46 Branch: refs/heads/master Commit: 03be8a46003b2958da5cf74e9d7b19a71c79c3ad Parents: b87c939 Author: Raphael Ouazana <[email protected]> Authored: Mon Jul 11 14:01:57 2016 +0200 Committer: Raphael Ouazana <[email protected]> Committed: Mon Jul 11 14:36:49 2016 +0200 ---------------------------------------------------------------------- .../store/mail/model/impl/MessageParser.java | 64 +++- .../mail/model/impl/MessageParserTest.java | 7 + .../resources/eml/invitationEmailFromOP.eml | 341 +++++++++++++++++++ 3 files changed, 401 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/03be8a46/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java index ff4e28c..ba407bb 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java @@ -45,7 +45,7 @@ import com.google.common.collect.ImmutableList; public class MessageParser { - private static final String MULTIPART_ALTERNATIVE = "multipart/alternative"; + private static final String TEXT_MEDIA_TYPE = "text"; private static final String CONTENT_TYPE = "Content-Type"; private static final String CONTENT_ID = "Content-ID"; private static final String CONTENT_DISPOSITION = "Content-Disposition"; @@ -60,7 +60,8 @@ public class MessageParser { .getBody(); try { if (body instanceof Multipart) { - return listAttachments((Multipart)body); + Multipart multipartBody = (Multipart)body; + return listAttachments(multipartBody, Context.fromSubType(multipartBody.getSubType())); } else { return ImmutableList.of(); } @@ -69,14 +70,14 @@ public class MessageParser { } } - private List<MessageAttachment> listAttachments(Multipart multipart) throws IOException { + private List<MessageAttachment> listAttachments(Multipart multipart, Context context) throws IOException { ImmutableList.Builder<MessageAttachment> attachments = ImmutableList.builder(); MessageWriter messageWriter = new DefaultMessageWriter(); for (Entity entity : multipart.getBodyParts()) { - if (isMultipart(entity) && !isMainBody(entity)) { - attachments.addAll(listAttachments((Multipart) entity.getBody())); + if (isMultipart(entity)) { + attachments.addAll(listAttachments((Multipart) entity.getBody(), Context.fromEntity(entity))); } else { - if (isAttachment(entity)) { + if (isAttachment(entity, context)) { attachments.add(retrieveAttachment(messageWriter, entity)); } } @@ -152,10 +153,6 @@ public class MessageParser { return entity.isMultipart() && entity.getBody() instanceof Multipart; } - private boolean isMainBody(Entity entity) { - return entity.getMimeType().equalsIgnoreCase(MULTIPART_ALTERNATIVE); - } - private boolean isInline(Optional<ContentDispositionField> contentDispositionField) { return contentDispositionField.transform(new Function<ContentDispositionField, Boolean>() { @Override @@ -165,7 +162,10 @@ public class MessageParser { }).or(false); } - private boolean isAttachment(Entity part) { + private boolean isAttachment(Entity part, Context context) { + if (context == Context.BODY && isTextPart(part)) { + return false; + } return Optional.fromNullable(part.getDispositionType()) .transform(new Function<String, Boolean>() { @@ -176,9 +176,51 @@ public class MessageParser { }).isPresent(); } + private boolean isTextPart(Entity part) { + Optional<ContentTypeField> contentTypeField = getContentTypeField(part); + if (contentTypeField.isPresent()) { + String mediaType = contentTypeField.get().getMediaType(); + if (mediaType != null && mediaType.equals(TEXT_MEDIA_TYPE)) { + return true; + } + } + return false; + } + private byte[] getBytes(MessageWriter messageWriter, Body body) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); messageWriter.writeBody(body, out); return out.toByteArray(); } + + private static enum Context { + BODY, + OTHER; + + private static final String ALTERNATIVE_SUB_TYPE = "alternative"; + private static final String MULTIPART_ALTERNATIVE = "multipart/" + ALTERNATIVE_SUB_TYPE; + + public static Context fromEntity(Entity entity) { + if (isMultipartAlternative(entity)) { + return BODY; + } + return OTHER; + } + + public static Context fromSubType(String subPart) { + if (isAlternative(subPart)) { + return BODY; + } + return OTHER; + } + + private static boolean isMultipartAlternative(Entity entity) { + return entity.getMimeType().equalsIgnoreCase(MULTIPART_ALTERNATIVE); + } + + private static boolean isAlternative(String subPart) { + return subPart.equalsIgnoreCase(ALTERNATIVE_SUB_TYPE); + } + + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03be8a46/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java index b5d0f5c..ca5354e 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java @@ -161,4 +161,11 @@ public class MessageParserTest { assertThat(attachments).hasSize(1); } + + @Test + public void getAttachementsShouldRetrieveAttachmentsWhenSomeAreInTheMultipartAlternative() throws Exception { + List<MessageAttachment> attachments = testee.retrieveAttachments(ClassLoader.getSystemResourceAsStream("eml/invitationEmailFromOP.eml")); + + assertThat(attachments).hasSize(6); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/03be8a46/mailbox/store/src/test/resources/eml/invitationEmailFromOP.eml ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/resources/eml/invitationEmailFromOP.eml b/mailbox/store/src/test/resources/eml/invitationEmailFromOP.eml new file mode 100644 index 0000000..531c6af --- /dev/null +++ b/mailbox/store/src/test/resources/eml/invitationEmailFromOP.eml @@ -0,0 +1,341 @@ +Return-Path: <[email protected]> +Received: from alderaan.linagora.com (smtp.linagora.dc1 [172.16.18.53]) + by imap (Cyrus v2.2.13-Debian-2.2.13-19+squeeze3) with LMTPA; + Tue, 05 Jul 2016 17:33:42 +0200 +X-Sieve: CMU Sieve 2.2 +Received: from [127.0.0.1] (openpaas-rse.linagora.dc1 [172.16.18.188]) + by alderaan.linagora.com (Postfix) with ESMTP id 1F72974B + for <[email protected]>; Tue, 5 Jul 2016 17:33:42 +0200 (CEST) +Content-Type: multipart/mixed; + boundary="----sinikael-?=_1-14677328221140.595814419677481" +From: [email protected] +To: [email protected] +Subject: New event from Romain BEVILLARD: test event +X-Mailer: nodemailer (1.3.4; +http://www.nodemailer.com; + SMTP/1.1.0[client:1.3.8]) +Date: Tue, 05 Jul 2016 15:33:42 +0000 +Message-Id: <[email protected]> +MIME-Version: 1.0 + +------sinikael-?=_1-14677328221140.595814419677481 +Content-Type: multipart/alternative; + boundary="----sinikael-?=_2-14677328221140.595814419677481" + +------sinikael-?=_2-14677328221140.595814419677481 +Content-Type: multipart/related; type="text/html"; + boundary="----sinikael-?=_3-14677328221140.595814419677481" + +------sinikael-?=_3-14677328221140.595814419677481 +Content-Type: text/html +Content-Transfer-Encoding: base64 + +PCFET0NUWVBFIGh0bWw+CjxodG1sIGNsYXNzPSJtYWlsIj4KICA8aGVhZD4KICAgIDxtZXRhIGNo +YXJzZXQ9InV0Zi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k +ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CiAgICA8c3R5bGU+QG1lZGlhIChtYXgtd2lk +dGg6IDc2OHB4KSB7CiAgLmNvbnRlbnQgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAg +IGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDsKICB9Cn0KCiAgICA8L3N0eWxlPgogIDwvaGVh +ZD4KICA8Ym9keSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsiPgogICAgPGRpdiBj +bGFzcz0id3JhcHBlciIgc3R5bGU9IndpZHRoOiA3MDBweDsgbWFyZ2luLWxlZnQ6IGF1dG87IG1h +cmdpbi1yaWdodDogYXV0bzsiPjxicj4KICAgICAgPGRpdiBjbGFzcz0ibWFpbC1jb250ZW50IiBz +dHlsZT0icGFkZGluZzogMTBweCAxM3B4OyBib3JkZXItcmFkaXVzOiA1cHg7IHRleHQtYWxpZ246 +IGp1c3RpZnk7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyI+CiAgICAgICAgPHRhYmxlIHN0eWxl +PSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB3aWR0aDogMTAwJTsgY29sb3I6ICMzMzMzMzM7 +Ij4KICAgICAgICAgIDx0ciBjbGFzcz0idGFibGUtaGVhZGVyIiBzdHlsZT0idGV4dC1hbGlnbjog +cmlnaHQ7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDZkN2Q5OyI+CiAgICAgICAgICAgIDx0 +ZCBjb2xzcGFuPSIyIiBjbGFzcz0ibG9nbyIgc3R5bGU9InBhZGRpbmctYm90dG9tOiAxMHB4OyBw +YWRkaW5nLXRvcDogNXB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICA8ZGl2 +PjxhIGhyZWY9Imh0dHBzOi8vZGV2Lm9wZW4tcGFhcy5vcmciPjxpbWcgc3JjPSJjaWQ6bG9nbyIg +YWx0PSJvcGVuLXBhYXMgbG9nbyI+PC9hPjwvZGl2PgogICAgICAgICAgICA8L3RkPgogICAgICAg +ICAgICA8dGQgY29sc3Bhbj0iMyIgY2xhc3M9Im9yZ2FuaXplciIgc3R5bGU9InBhZGRpbmctYm90 +dG9tOiAxMHB4OyBwYWRkaW5nLXRvcDogNXB4OyB0ZXh0LWFsaWduOiByaWdodDsgdHJhbnNmb3Jt +OiB0cmFuc2xhdGUoODBweCk7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoODBweCk7IC1t +b3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoODBweCk7Ij4KICAgICAgICAgICAgICA8aDUgc3R5bGU9 +InBhZGRpbmc6IDA7IG1hcmdpbjogMDsiPgogICAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdp +bjogMDsgcGFkZGluZzogMDsiPlJvbWFpbiBCRVZJTExBUkQgKDxzcGFuIGNsYXNzPSJzbWFsbCIg +c3R5bGU9ImNvbG9yOiBncmV5OyI+PGEgaHJlZj0ibWFpbHRvOnJiZXZpbGxhcmRAbGluYWdvcmEu +Y29tIj48aW1nIHNyYz0iY2lkOmVtYWlsIiBhbHQ9Ik9yZ2FuaXplciBtYWlsIiBzdHlsZT0ibWFy +Z2luOiAwOyBwYWRkaW5nOiAwOyI+PC9hPik8L3NwYW4+PC9wPgogICAgICAgICAgICAgICAgPHAg +Y2xhc3M9ImJpZyIgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsgZm9udC1zaXplOiAxLjNl +bTsiPmhhcyBpbnZpdGVkIHlvdSB0byBhIG1lZXRpbmchPC9wPgogICAgICAgICAgICAgIDwvaDU+ +CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBjbGFzcz0iYXZhdGFyIGluZGVudC1y +aWdodCIgc3R5bGU9InBhZGRpbmctYm90dG9tOiAxMHB4OyBwYWRkaW5nLXRvcDogNXB4OyB0ZXh0 +LWFsaWduOiByaWdodDsgcGFkZGluZy1yaWdodDogMTVweDsiPjxpbWcgc3JjPSJodHRwczovL2Rl +di5vcGVuLXBhYXMub3JnL2FwaS9hdmF0YXJzP29iamVjdFR5cGU9dXNlciZhbXA7ZW1haWw9cmJl +dmlsbGFyZEBsaW5hZ29yYS5jb20iIGFsdD0ib3JnYW5pemVyIGF2YXRhciIgd2lkdGg9IjQ1cHgi +IGhlaWdodD0iNDJweCIgc3R5bGU9IndpZHRoOiA1NHB4OyBoZWlnaHQ6IDUwcHg7IHBhZGRpbmc6 +IDBweDsiPjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8 +dGggY29sc3Bhbj0iNiIgY2xhc3M9InRpdGxlIGluZGVudCIgc3R5bGU9ImZvbnQtc2l6ZTogMS4z +ZW07IHBhZGRpbmctYm90dG9tOiAxMHB4OyBwYWRkaW5nLXRvcDogMjBweDsgdGV4dC1hbGlnbjog +bGVmdDsgcGFkZGluZy1sZWZ0OiAxMHB4OyI+dGVzdCBldmVudDwvdGg+CiAgICAgICAgICA8L3Ry +PgogICAgICAgICAgPHRyPgogICAgICAgICAgICA8dGQgY2xhc3M9ImluZGVudCIgc3R5bGU9InBh +ZGRpbmctdG9wOiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsgcGFkZGluZy1sZWZ0OiAxMHB4 +OyI+PGltZyBzcmM9ImNpZDpjbG9jayIgYWx0PSJGcm9tIj4KICAgICAgICAgICAgPC90ZD4KICAg +ICAgICAgICAgPHRkIHN0eWxlPSJwYWRkaW5nLXRvcDogMTBweDsgcGFkZGluZy1ib3R0b206IDEw +cHg7Ij4KICAgICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOiAwOyBwYWRkaW5nOiAwOyI+MDcv +MDYvMjAxNjwvcD4KICAgICAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOiAwOyBwYWRkaW5nOiAw +OyI+MTE6MDAgQU08L3A+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgIDx0ZCBzdHlsZT0i +cGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAxMHB4OyI+PGltZyBzcmM9ImNpZDpj +aGVjayIgYWx0PSJUbyIgY2xhc3M9ImNoZWNrLXRyYW5zZm9ybSIgc3R5bGU9InRyYW5zZm9ybTog +cm90YXRlKC05MGRlZyk7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTsgLW1vei10 +cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpOyI+CiAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAg +IDx0ZCBzdHlsZT0icGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAxMHB4OyI+CiAg +ICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsiPjA3LzA2LzIwMTY8 +L3A+CiAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsiPjEyOjAw +IFBNPC9wPgogICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8dGQgY2xhc3M9InJlY3VycmVu +Y2UiIHN0eWxlPSJwYWRkaW5nLXRvcDogMTBweDsgcGFkZGluZy1ib3R0b206IDEwcHg7Ij48L3Rk +PgogICAgICAgICAgICA8dGQgY2xhc3M9ImluZGVudC1yaWdodCIgc3R5bGU9InBhZGRpbmctdG9w +OiAxMHB4OyBwYWRkaW5nLWJvdHRvbTogMTBweDsgdGV4dC1hbGlnbjogcmlnaHQ7IHBhZGRpbmct +cmlnaHQ6IDE1cHg7Ij48YSBocmVmPSJodHRwczovL2Rldi5vcGVuLXBhYXMub3JnLyMvY2FsZW5k +YXIiPlNlZSBpbiBjYWxlbmRhcjwvYT48L3RkPgogICAgICAgICAgPC90cj4KICAgICAgICAgIDx0 +cj4KICAgICAgICAgICAgPHRkIGNsYXNzPSJpbmRlbnQiIHN0eWxlPSJwYWRkaW5nLXRvcDogMTBw +eDsgcGFkZGluZy1ib3R0b206IDEwcHg7IHBhZGRpbmctbGVmdDogMTBweDsiPjxpbWcgc3JjPSJj +aWQ6YWNjb3VudC1tdWx0aXBsZSIgYWx0PSJBdHRlbmRlZXMiPjwvdGQ+CiAgICAgICAgICAgIDx0 +ZCBjb2xzcGFuPSI1IiBzdHlsZT0icGFkZGluZy10b3A6IDEwcHg7IHBhZGRpbmctYm90dG9tOiAx +MHB4OyI+PHNwYW4+CiAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuIGNsYXNzPSJzbWFsbCIgc3R5 +bGU9ImNvbG9yOiBncmV5OyI+cmJldmlsbGFyZEBsaW5hZ29yYS5jb208L3NwYW4+CiAgICAgICAg +ICAgICAgICA8L2Rpdj48L3NwYW4+PHNwYW4+CiAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuPkRh +dmlkIERPTENJTUFTQ09MTyA8PHNwYW4gY2xhc3M9InNtYWxsIiBzdHlsZT0iY29sb3I6IGdyZXk7 +Ij5kZG9sY2ltYXNjb2xvQGxpbmFnb3JhLmNvbTwvc3Bhbj48L3NwYW4+PiwKICAgICAgICAgICAg +ICAgIDwvZGl2Pjwvc3Bhbj4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CiAgICAg +ICAgICA8dHIgY2xhc3M9InRhYmxlLWZvb3RlciIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsg +Zm9udC1zaXplOiAxLjJlbTsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkNmQ3ZDk7Ij4KICAgICAg +ICAgICAgPHRkIGNvbHNwYW49IjMiIGNsYXNzPSJhdHRlbmQtcXVlc3Rpb24iIHN0eWxlPSJwYWRk +aW5nLWJvdHRvbTogMTBweDsgcGFkZGluZy10b3A6IDIwcHg7IGNvbG9yOiBncmV5OyI+V2lsbCB5 +b3UgYXR0ZW5kID88L3RkPgogICAgICAgICAgICA8dGQgY29sc3Bhbj0iMSIgc3R5bGU9InBhZGRp +bmctYm90dG9tOiAxMHB4OyBwYWRkaW5nLXRvcDogMjBweDsiPjxhIGhyZWY9Imh0dHBzOi8vZGV2 +Lm9wZW4tcGFhcy5vcmcvY2FsZW5kYXIvYXBpL2NhbGVuZGFycy9ldmVudC9wYXJ0aWNpcGF0aW9u +P2p3dD1leUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpTVXpJMU5pSjkuZXlKaGRIUmxibVJsWlVW +dFlXbHNJam9pWkdSdmJHTnBiV0Z6WTI5c2IwQnNhVzVoWjI5eVlTNWpiMjBpTENKdmNtZGhibWw2 +WlhKRmJXRnBiQ0k2SW5KaVpYWnBiR3hoY21SQWJHbHVZV2R2Y21FdVkyOXRJaXdpZFdsa0lqb2la +RFF4WTJVeE1qWXROV1U1WXkwME5XRTJMV0U1TnprdE5HSmpOV1JpTnpjNU1UUmxJaXdpWTJGc1pX +NWtZWEpWVWtraU9pSmxkbVZ1ZEhNaUxDSmhZM1JwYjI0aU9pSkJRME5GVUZSRlJDSXNJbWxoZENJ +Nk1UUTJOemN6TWpneU1YMC5kalVSSTR0LV9FSUpaTVVnNmM4TjRBeEpUYU9SYlZrQXFNSlVKRV9m +VVRUb3ZneVV1TDhXbWExWlpqVnFjNDZzR1JBNktwWUp6ZHNUVmVzX1JiTDRwUkF5V0JvZlRPalFP +Sk0zbU42OVVYcGNwQlZYT09JaXVXc1hiWG5JUUJwbzk1NXdUN2VvZlAtdDVOaGdnZkZvSFdTaVpj +ZWl4VU5oTWZobWFYdm9iRGdWcVc1MVlvZ0lXQ2swWnR5WGdXY1h6OW9sYWFYQjlwYl9aNmZYbHJ4 +UGJTRFhyWGNLQUUxMmtlS3p0cnhsYkRRbmpISElMZEkteFFjV3BEVm9qbi01S3RYYjZEN3lHbzFL +X2QtMlIxLXY3UXQ1dUk3eFJkVjdILUtsYkJMdGZGU2hkU1Q5ak1GTkFscWZySk0zX21MMDJWYkRp +dmtoeGNhY0RwT3pCTXQxQ3ciIGNsYXNzPSJncmVlbiIgc3R5bGU9ImNvbG9yOiBncmVlbjsgdGV4 +dC1kZWNvcmF0aW9uOiBub25lOyI+WWVzPC9hPjwvdGQ+CiAgICAgICAgICAgIDx0ZCBjb2xzcGFu +PSIxIiBzdHlsZT0icGFkZGluZy1ib3R0b206IDEwcHg7IHBhZGRpbmctdG9wOiAyMHB4OyI+PGEg +aHJlZj0iaHR0cHM6Ly9kZXYub3Blbi1wYWFzLm9yZy9jYWxlbmRhci9hcGkvY2FsZW5kYXJzL2V2 +ZW50L3BhcnRpY2lwYXRpb24/and0PWV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlK +OS5leUpoZEhSbGJtUmxaVVZ0WVdsc0lqb2laR1J2YkdOcGJXRnpZMjlzYjBCc2FXNWhaMjl5WVM1 +amIyMGlMQ0p2Y21kaGJtbDZaWEpGYldGcGJDSTZJbkppWlhacGJHeGhjbVJBYkdsdVlXZHZjbUV1 +WTI5dElpd2lkV2xrSWpvaVpEUXhZMlV4TWpZdE5XVTVZeTAwTldFMkxXRTVOemt0TkdKak5XUmlO +emM1TVRSbElpd2lZMkZzWlc1a1lYSlZVa2tpT2lKbGRtVnVkSE1pTENKaFkzUnBiMjRpT2lKVVJV +NVVRVlJKVmtVaUxDSnBZWFFpT2pFME5qYzNNekk0TWpGOS5pSFBrV0lLUTZfazBGMlNMd0ZWMUVI +Sk9UVml3NGRvYTJhSzFMVHRQZTRpUktRVmprUTFDMDUzYzFWUDJOeVd1SUhwQU1ZWm0wbEd5N2pM +TmZ1Q0Qzek85QUpvLUVqcjF2Y3VqN3BpTEhHNTYyWVdfcnh1bmgtNlpBV0QzNS1taTZhbkFpVGFG +U2NlZWFIOERDM1RiTzdHbEw5TXZZcEpVWnBFZU1BTWM4NnRLN2I5eDBaWlpNN2pWTmpJVjJtdndr +OFBSdW1qSDRNVTYzTnZnUFlkdXhLTm0xMHV0RlhFejBtbGFXZnliWWExdng1SlFZekJPaGlHYWF4 +UGp2bllSOU9pc05nRkVUcVhsaWJyd1VRS01GbTFXakczeEN0V01vRVczMGc2czM1WHVOdDZEaFM0 +LVdCUTZ1Zm0wX0J1Yk14VWtJaVNjUko2dGZVNENwNGxJQXciIGNsYXNzPSJibHVlIiBzdHlsZT0i +Y29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPk1heWJlPC9hPjwvdGQ+CiAgICAg +ICAgICAgIDx0ZCBjb2xzcGFuPSIxIiBzdHlsZT0icGFkZGluZy1ib3R0b206IDEwcHg7IHBhZGRp +bmctdG9wOiAyMHB4OyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXYub3Blbi1wYWFzLm9yZy9jYWxlbmRh +ci9hcGkvY2FsZW5kYXJzL2V2ZW50L3BhcnRpY2lwYXRpb24/and0PWV5SjBlWEFpT2lKS1YxUWlM +Q0poYkdjaU9pSlNVekkxTmlKOS5leUpoZEhSbGJtUmxaVVZ0WVdsc0lqb2laR1J2YkdOcGJXRnpZ +MjlzYjBCc2FXNWhaMjl5WVM1amIyMGlMQ0p2Y21kaGJtbDZaWEpGYldGcGJDSTZJbkppWlhacGJH +eGhjbVJBYkdsdVlXZHZjbUV1WTI5dElpd2lkV2xrSWpvaVpEUXhZMlV4TWpZdE5XVTVZeTAwTldF +MkxXRTVOemt0TkdKak5XUmlOemM1TVRSbElpd2lZMkZzWlc1a1lYSlZVa2tpT2lKbGRtVnVkSE1p +TENKaFkzUnBiMjRpT2lKRVJVTk1TVTVGUkNJc0ltbGhkQ0k2TVRRMk56Y3pNamd5TVgwLm5UbENE +ZUNEakozbkQxWlQyZ1pkbFFTV2RvVUszSXk0TGxxNml5S1Nja2o4S1RPb1FaWWJfSmVWZXdfUEtr +MnJQV21aOTNXTUhNLVNjM2xteC1nazlRUEl5X0psSVFYOGp6cDYwM3VZQWtoVW5FcG5UVm5DN0FN +RTM2YjVkamxZYVdSRmlGcEQ3eWIzNzVOTHF3RkRiQ0MtTzFTYW5CUmRuLXZ4NXdnUXprMnJKVGw3 +WlktNkxjc2VxeWd1c3BDbWdnaEhMMlNuR0U0SlI5Um13VG9sMTVzUzdxVjZpdlJFVEYwejVyaTE4 +RE5HVGJLdTlwazJEZXg3b29xd0NJR3ZlLUpTVXJiSEtiYVgtZktpZHNpc1YwNXhnNUlHdzhjRE42 +aU1MQjA1cm8wUXRZZzJBOWdEd0VnbGhkZGZaUU1tSGF1cXdjRmU0TGlIX3lDbExlRVZGdyIgY2xh +c3M9InJlZCIgc3R5bGU9ImNvbG9yOiByZWQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPk5vPC9h +PjwvdGQ+CiAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGFibGU+CiAgICAgIDwvZGl2PgogICAg +ICA8Zm9vdGVyIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDNweDsgbWFyZ2luLXRvcDogMTBweDsiPgog +ICAgICAgIDxkaXYgY2xhc3M9ImZvb3RlciIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+PGEg +aHJlZj0iaHR0cHM6Ly9kZXYub3Blbi1wYWFzLm9yZy8jL2NhbGVuZGFyLzU3NjhmYTYyYmQxY2Vi +Y2YyZWI2OTM5MC9ldmVudC9kNDFjZTEyNi01ZTljLTQ1YTYtYTk3OS00YmM1ZGI3NzkxNGUvY29u +c3VsdCI+TW9yZSBkZXRhaWxzLi4uPC9hPjwvZGl2PgogICAgICA8L2Zvb3Rlcj4KICAgIDwvZGl2 +PgogIDwvYm9keT4KPC9odG1sPg== +------sinikael-?=_3-14677328221140.595814419677481 +Content-Type: image/png; name=account-multiple.png +Content-Id: <account-multiple> +Content-Disposition: inline; filename=account-multiple.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI +WXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAwAAAAMADO7oxXAAABRElEQVRo3u3XMUoDQRTG8X9C +iKSxFoKlYGNn7SVS24pN7DyEnTdIZ+MhAjbbCAmIlRAIHiCwGOyMzYzEdRN38mUG17wfvGZ3vnkz +zcwuGGOMMaZe2sAVkAFvrjL3rJ0gL+kCI2CxokZuTKy8ZA8Yr2nua+zGbjsv61do7qsfIS/LAhaQ +RcjL8oAF5BHypZoxdppSyAaexbFqXt7AnThWzctqf4xCzS8yr9afEsb8N42K4zrAKXAGnABHwCGw +797nwCvwAjwBD8Aj8L5mzkvgVsj/qgX0gHtgTvXvGF9zl+25ucqcAx9CvlQTuAAmGyx6VU3cnGU3 +/42Y/6YLDLe48GIN+XlRtYCpkP9yEDCRUlPXa9m1mAdgkGDxvgaF3sdiHoBZwg3MCr07m+aXj9EF +aRWP8ND+DdixP7I/yTZgjDHGmF32CXySfkMcBQhTAAAAAElFTkSuQmCC +------sinikael-?=_3-14677328221140.595814419677481 +Content-Type: image/png; name=check.png +Content-Id: <check> +Content-Disposition: inline; filename=check.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI +WXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAwAAAAMADO7oxXAAAAuklEQVRo3u3UsQ2DMBRF0ZtM +wDAJZDJa2CtD4Q1IAUgkcjCY4vujdyU3ND4PIUAppZRS6pI9gNYacQY/ACPQWWPO4Jfzd8TdWhvB +v4Hq5/nNGrYXH/h+8yPQW8OELznX+Kfwwh+vFj6zlumP4RLfzZcNmSOKwC8nHBxh/s33kcsD058k +VWONT42oPeBzRhSHT41oPOBTI17zKRqfGuECvzXCDX7PiOLxWyPc4GMj3OHXI9zilVJKKZXbB6A3 +sIWtLgl8AAAAAElFTkSuQmCC +------sinikael-?=_3-14677328221140.595814419677481 +Content-Type: image/png; name=clock.png +Content-Id: <clock> +Content-Disposition: inline; filename=clock.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI +WXMAAABIAAAASABGyWs+AAAACXZwQWcAAAAwAAAAMADO7oxXAAACr0lEQVRo3u2Zv08UQRTHP55w +idIhFOp1JvIHiHdURu0tSbA/aOwsLpRWYo1KKGyNJNoQEjv9B4wxkc4fhWIgARITL6gUosW+0/Ht +3N3M7NyuG++bTLG3+/1+31uGmfdmYYgh/m8ci6RTAS4CV4ELwHmgBozJ/QPgE/AGeAk8B14AR0W/ +gBpwB9gCfnqOLeHWigh8ArgPHAYErsehaE3kFfx1YC9C4HrsifbAMAqs9gigDTwCFoA6MAlUZUzK +bwvyTLuHziowEjv4k8BGF8O3QFOe8dFrCtemueGp1/fNr1tMvgEtuZ9FuyVaWn89o/Zv2KbNNjAT +6w2J1jb26ZQJcxbRTQaz9NVEW/vNhQqeAvaV2M6AgjeT2FGe+xKLN1aU0Heg4cE3uT5oiJfJXwl5 +E3qTanlqhCaAeOnNzusvv6QE3uG/ImRJYFQ8TY0lV3KFdG3TDAgiSwKIp66dKi7EGUX8wp+qMs8E +xsTb1Ekt3baMLqvrpyTlcN44EO9esVkTmFbXzwoIvpu3js2awJS6fl1gAtp7yoWkN6/QOj3r/wDi +rTe1vtDrf7XABKqk94O/4LQsRUA9Jx9gMFPoB/AgQCtoCumK0Kf+MXENeK+0PgM3cO+4Goq/6UJ6 +rEjzgQkAnABuAV+V5ivgkgN/XvGeuJguKtJahgQ6OEe6JT0CHgKne/DWFGfRxaxOnFLCBtu0agM3 +Lc86lRI2VICPihhSzHWDbVrZWsfgYg7gtiKHlNP90JlWu8C4upepnAY4Q7or8m1ofLw0Mjc0AHeV +iG9LGYooLSUkjfSuEipVUw8wq8RKdazSwbJFtDQHWwDHKfnRIiRrd2kPdzsYAe51Mfznj9dNzFLS +Dxwmxkn2Cb1eh4zcPzGZOEuyxX8ICDzKR77Yn1mvkBx9lOYz6xBDlB2/AIYi3dBcDTVMAAAAAElF +TkSuQmCC +------sinikael-?=_3-14677328221140.595814419677481 +Content-Type: image/png; name=email.png +Content-Id: <email> +Content-Disposition: inline; filename=email.png +Content-Transfer-Encoding: base64 + +iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAhElEQVR4Ab3OsW2DUBiF0SO91iPg +zsIDMIi9iXENBSN4EzOIs0IUkg1Ci/Sb6klIkC7crz3Ftf/OBrHRoARa4WOVvIQG6ISkNi7Ar5sk +dBnpFXN9Jk+Fo36JwqiWXP34dpHcjWKB8ofKYa7KH1dQmDzmJrGNcv+J2j9RA5S+Nsmnk733Blrx +n3mshZR3AAAAAElFTkSuQmCC +------sinikael-?=_3-14677328221140.595814419677481 +Content-Type: image/png; name=logo.png +Content-Id: <logo> +Content-Disposition: inline; filename=logo.png +Content-Transfer-Encoding: base64 + +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 +dhP8HwMsQYPp8vZfAAAAAElFTkSuQmCC +------sinikael-?=_3-14677328221140.595814419677481-- + +------sinikael-?=_2-14677328221140.595814419677481 +Content-Type: text/calendar; charset=UTF-8; method=REQUEST +Content-Transfer-Encoding: base64 + +QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjIuMA0KUFJPRElEOi0vL1NhYnJlLy9TYWJyZSBWT2Jq +ZWN0IDQuMS4wLy9FTg0KQ0FMU0NBTEU6R1JFR09SSUFODQpNRVRIT0Q6UkVRVUVTVA0KQkVHSU46 +VlRJTUVaT05FDQpUWklEOkV1cm9wZS9CZXJsaW4NCkJFR0lOOkRBWUxJR0hUDQpUWk9GRlNFVEZS +T006KzAxMDANClRaT0ZGU0VUVE86KzAyMDANClRaTkFNRTpDRVNUDQpEVFNUQVJUOjE5NzAwMzI5 +VDAyMDAwMA0KUlJVTEU6RlJFUT1ZRUFSTFk7QllNT05USD0zO0JZREFZPS0xU1UNCkVORDpEQVlM +SUdIVA0KQkVHSU46U1RBTkRBUkQNClRaT0ZGU0VURlJPTTorMDIwMA0KVFpPRkZTRVRUTzorMDEw +MA0KVFpOQU1FOkNFVA0KRFRTVEFSVDoxOTcwMTAyNVQwMzAwMDANClJSVUxFOkZSRVE9WUVBUkxZ +O0JZTU9OVEg9MTA7QllEQVk9LTFTVQ0KRU5EOlNUQU5EQVJEDQpFTkQ6VlRJTUVaT05FDQpCRUdJ +TjpWRVZFTlQNClVJRDpkNDFjZTEyNi01ZTljLTQ1YTYtYTk3OS00YmM1ZGI3NzkxNGUNClRSQU5T +UDpPUEFRVUUNCkRUU1RBUlQ7VFpJRD1FdXJvcGUvQmVybGluOjIwMTYwNzA2VDExMDAwMA0KRFRF +TkQ7VFpJRD1FdXJvcGUvQmVybGluOjIwMTYwNzA2VDEyMDAwMA0KT1JHQU5JWkVSO0NOPVJvbWFp +biBCRVZJTExBUkQ6bWFpbHRvOnJiZXZpbGxhcmRAbGluYWdvcmEuY29tDQpTVU1NQVJZOnRlc3Qg +ZXZlbnQNCkFUVEVOREVFO1BBUlRTVEFUPUFDQ0VQVEVEO1JTVlA9RkFMU0U7Uk9MRT1DSEFJUjpt +YWlsdG86cmJldmlsbGFyZEBsaW5hZ29yYQ0KIC5jb20NCkFUVEVOREVFO1BBUlRTVEFUPU5FRURT +LUFDVElPTjtSU1ZQPVRSVUU7Uk9MRT1SRVEtUEFSVElDSVBBTlQ7Q049RGF2aWQgRE9MQw0KIElN +QVNDT0xPOm1haWx0bzpkZG9sY2ltYXNjb2xvQGxpbmFnb3JhLmNvbQ0KRU5EOlZFVkVOVA0KRU5E +OlZDQUxFTkRBUg0K +------sinikael-?=_2-14677328221140.595814419677481-- + +------sinikael-?=_1-14677328221140.595814419677481 +Content-Type: application/ics; name=meeting.ics +Content-Disposition: attachment; filename=meeting.ics +Content-Transfer-Encoding: base64 + +QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjIuMA0KUFJPRElEOi0vL1NhYnJlLy9TYWJyZSBWT2Jq +ZWN0IDQuMS4wLy9FTg0KQ0FMU0NBTEU6R1JFR09SSUFODQpNRVRIT0Q6UkVRVUVTVA0KQkVHSU46 +VlRJTUVaT05FDQpUWklEOkV1cm9wZS9CZXJsaW4NCkJFR0lOOkRBWUxJR0hUDQpUWk9GRlNFVEZS +T006KzAxMDANClRaT0ZGU0VUVE86KzAyMDANClRaTkFNRTpDRVNUDQpEVFNUQVJUOjE5NzAwMzI5 +VDAyMDAwMA0KUlJVTEU6RlJFUT1ZRUFSTFk7QllNT05USD0zO0JZREFZPS0xU1UNCkVORDpEQVlM +SUdIVA0KQkVHSU46U1RBTkRBUkQNClRaT0ZGU0VURlJPTTorMDIwMA0KVFpPRkZTRVRUTzorMDEw +MA0KVFpOQU1FOkNFVA0KRFRTVEFSVDoxOTcwMTAyNVQwMzAwMDANClJSVUxFOkZSRVE9WUVBUkxZ +O0JZTU9OVEg9MTA7QllEQVk9LTFTVQ0KRU5EOlNUQU5EQVJEDQpFTkQ6VlRJTUVaT05FDQpCRUdJ +TjpWRVZFTlQNClVJRDpkNDFjZTEyNi01ZTljLTQ1YTYtYTk3OS00YmM1ZGI3NzkxNGUNClRSQU5T +UDpPUEFRVUUNCkRUU1RBUlQ7VFpJRD1FdXJvcGUvQmVybGluOjIwMTYwNzA2VDExMDAwMA0KRFRF +TkQ7VFpJRD1FdXJvcGUvQmVybGluOjIwMTYwNzA2VDEyMDAwMA0KT1JHQU5JWkVSO0NOPVJvbWFp +biBCRVZJTExBUkQ6bWFpbHRvOnJiZXZpbGxhcmRAbGluYWdvcmEuY29tDQpTVU1NQVJZOnRlc3Qg +ZXZlbnQNCkFUVEVOREVFO1BBUlRTVEFUPUFDQ0VQVEVEO1JTVlA9RkFMU0U7Uk9MRT1DSEFJUjpt +YWlsdG86cmJldmlsbGFyZEBsaW5hZ29yYQ0KIC5jb20NCkFUVEVOREVFO1BBUlRTVEFUPU5FRURT +LUFDVElPTjtSU1ZQPVRSVUU7Uk9MRT1SRVEtUEFSVElDSVBBTlQ7Q049RGF2aWQgRE9MQw0KIElN +QVNDT0xPOm1haWx0bzpkZG9sY2ltYXNjb2xvQGxpbmFnb3JhLmNvbQ0KRU5EOlZFVkVOVA0KRU5E +OlZDQUxFTkRBUg0K +------sinikael-?=_1-14677328221140.595814419677481-- --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
