[Exchange-Mailer] Mails marked as junk not moved to Junk folder

"P Sankar" <[email protected]>
Newsgroups gmane.comp.gnome.evolution.patches
Message-ID <[email protected]>
Hi,

When a mail in an exchange-provider is marked as Junk. It disappears
from the view and is also not moved to the Junk folder. The bug # is
257641. 

Attached patch fixes the issue. Please review.

Sankar

 Novell, Inc. 
Software for the Open Enterprise™
http://www.novell.com

_______________________________________________
Evolution-patches mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/evolution-patches
257641.patch (text/plain, 3.6 KB)
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-exchange/ChangeLog,v
retrieving revision 1.499
diff -u -p -r1.499 ChangeLog
--- ChangeLog	10 May 2006 11:18:32 -0000	1.499
+++ ChangeLog	11 May 2006 08:36:01 -0000
@@ -1,3 +1,15 @@
+2006-05-11  Sankar P  <[email protected]>
+
+	* camel/camel-exchange-store.c: (construct):
+	  camel/camel-exchange-folder.c: (exchange_sync):
+	 
+	  Support for Mark-as-Junk in Exchange.
+	  Exchange doesnot have VJunk and so when a message was marked as Junk 
+	  in exchange it gets disappeared from the view and there is no way to 
+	  get back the message without clearing the cache. This is fixed with
+	  this commit.
+	  Fixes #257641
+	  
 2006-05-10  Sushma Rai  <[email protected]>
 
 	* storage/exchange-autoconfig-wizard.c (owa_page_next): Corrected the
Index: camel/camel-exchange-store.c
===================================================================
RCS file: /cvs/gnome/evolution-exchange/camel/camel-exchange-store.c,v
retrieving revision 1.28
diff -u -p -r1.28 camel-exchange-store.c
--- camel/camel-exchange-store.c	13 Feb 2006 11:59:42 -0000	1.28
+++ camel/camel-exchange-store.c	11 May 2006 08:36:01 -0000
@@ -285,8 +285,7 @@ construct (CamelService *service, CamelS
 	if (!(exch->storage_path = camel_session_get_storage_path (session, service, ex)))
 		return;
 	
-	if (camel_url_get_param (url, "filter_junk"))
-		CAMEL_STORE (service)->flags |= CAMEL_STORE_VJUNK;
+	CAMEL_STORE (service)->flags &= ~CAMEL_STORE_VJUNK;
 	
 	exch->stub = NULL;
 }
Index: camel/camel-exchange-folder.c
===================================================================
RCS file: /cvs/gnome/evolution-exchange/camel/camel-exchange-folder.c,v
retrieving revision 1.23
diff -u -p -r1.23 camel-exchange-folder.c
--- camel/camel-exchange-folder.c	4 Mar 2006 09:46:44 -0000	1.23
+++ camel/camel-exchange-folder.c	11 May 2006 08:36:01 -0000
@@ -1129,8 +1129,51 @@ camel_exchange_folder_construct (CamelFo
 static void 
 exchange_sync (CamelFolder *folder, gboolean expunge, CamelException *ex)
 {
+	int count, i;
+	CamelMessageInfo *info;
+	GPtrArray *uids = NULL;
+	CamelFolder *dest = NULL;
+	const char *uid ;
+
 	if (expunge)
 		exchange_expunge (folder, ex);
-	
+
+	count = camel_folder_summary_count (folder->summary);
+	for (i=0 ; i < count ; i++) {
+		guint32 flags = 0;
+		info = camel_folder_summary_index (folder->summary, i);
+
+		if(!info)
+			continue;
+		flags = camel_message_info_flags (info);	
+
+		if ((flags & CAMEL_MESSAGE_JUNK) ) {
+			/* README: Is the exchange server really capable to understand that mails copied to
+			   the junk folder are spam and will it enhance its knowledge? 
+			   Should look at WebDAV specification to see if there is 
+			   anything else we need to do. */
+
+			uid = camel_message_info_uid (info);
+			if (!uids)
+				uids = g_ptr_array_new ();
+			g_ptr_array_add (uids, (gpointer) uid);
+		}
+	}
+
+	if (uids) {
+		/* FIXME: If the Virtual nature of the Junk and Trash folders are dependant on the 
+		   provider, why cant we make it a part of camel i.e., camel should support both 
+		   virtual and actual junk and Trash folders, one of which the providers can choose 
+		   as per their model. The GW provider also seems to be performing the following 
+		   set of operations. */
+		
+		dest = camel_store_get_folder (folder->parent_store, "personal/Junk E-mail", 0, ex);
+		if (dest) 
+			transfer_messages_to (folder, uids, dest, NULL, TRUE, ex);
+		else { 
+			g_print ("\n\aMissing server-side Junk-folder\n\a");
+			camel_message_info_set_flags (info, CAMEL_MESSAGE_JUNK, 0);
+		}
+	}
 	camel_folder_summary_save (folder->summary);
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.