Add junk/spam mail folder detection
authorAndre Heinecke <aheinecke@intevation.de>
Mon, 5 Nov 2018 15:44:00 +0000 (16:44 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Mon, 5 Nov 2018 15:44:00 +0000 (16:44 +0100)
* src/oomhelp.cpp, src/oomhelp.h (is_junk_mail): New.

--
We can't access attachments in junk so we need some special
handling. As there is no "Junk" property we do this by
comparing the entryid of the accounts junk folder with
the actual folder of the mail.

GnuPG-Bug-Id: T4188

src/oomhelp.cpp
src/oomhelp.h

index 9ac1083..ace525a 100644 (file)
@@ -2872,3 +2872,60 @@ release_disp (LPDISPATCH obj)
   gpgol_release (obj);
   TRETURN;
 }
+
+bool
+is_junk_mail (LPDISPATCH mailitem)
+{
+  TSTART;
+  if (!mailitem)
+    {
+      STRANGEPOINT;
+      TRETURN false;
+    }
+
+  auto mapi_namespace = MAKE_SHARED (get_oom_object (mailitem, "Session"));
+
+  if (!mapi_namespace)
+    {
+      STRANGEPOINT;
+      TRETURN false;
+    }
+
+  auto spam_folder = MAKE_SHARED (get_oom_object (mapi_namespace.get(),
+                                                  "GetDefaultFolder(23)"));
+
+  if (!spam_folder)
+    {
+      STRANGEPOINT;
+      TRETURN false;
+    }
+
+  auto mail_folder = MAKE_SHARED (get_oom_object (mailitem, "Parent"));
+
+  if (!mail_folder)
+    {
+      STRANGEPOINT;
+      TRETURN false;
+    }
+
+  char *spam_id = get_oom_string (spam_folder.get(), "entryID");
+  if (!spam_id)
+    {
+      STRANGEPOINT;
+      TRETURN false;
+    }
+  char *folder_id = get_oom_string (mail_folder.get(), "entryID");
+  if (!folder_id)
+    {
+      STRANGEPOINT;
+      free (spam_id);
+      TRETURN false;
+    }
+
+  bool ret = !strcmp (spam_id, folder_id);
+
+  free (spam_id);
+  free (folder_id);
+
+  TRETURN ret;
+}
index 3f9199c..762f578 100644 (file)
@@ -427,4 +427,7 @@ LPDISPATCH find_or_add_text_prop (LPDISPATCH props, const char *name);
 
 /* Find a user property and return it if found. */
 LPDISPATCH find_user_prop (LPDISPATCH props, const char *name);
+
+/* Return true if this message is in the junk folder for this account */
+bool is_junk_mail (LPDISPATCH mailitem);
 #endif /*OOMHELP_H*/