diff --git a/camel/providers/pop3/camel-pop3-folder.c b/camel/providers/pop3/camel-pop3-folder.c
index 94d0722..802a225 100644
--- a/camel/providers/pop3/camel-pop3-folder.c
+++ b/camel/providers/pop3/camel-pop3-folder.c
@@ -411,7 +411,10 @@ camel_pop3_delete_old(CamelFolder *folder, gint days_to_delete,	CamelException *
 	CamelPOP3FolderInfo *fi;
 	gint i;
 	CamelPOP3Store *pop3_store;
+	CamelMimeMessage *message;
 	time_t temp, message_time;
+	gdouble time_diff;
+	gint day_lag;
 
 	pop3_folder = CAMEL_POP3_FOLDER (folder);
 	pop3_store = CAMEL_POP3_STORE (CAMEL_FOLDER(pop3_folder)->parent_store);
@@ -422,35 +425,41 @@ camel_pop3_delete_old(CamelFolder *folder, gint days_to_delete,	CamelException *
 		fi = pop3_folder->uids->pdata[i];
 
 		d(printf("%s(%d): fi->uid=[%s]\n", __FILE__, __LINE__, fi->uid));
-		if (pop3_get_message_time_from_cache (folder, fi->uid, &message_time)) {
-			gdouble time_diff = difftime(temp,message_time);
-			gint day_lag = time_diff/(60*60*24);
-
-			d(printf("%s(%d): message_time= [%ld]\n", __FILE__, __LINE__, message_time));
-			d(printf("%s(%d): day_lag=[%d] \t days_to_delete=[%d]\n",
-				 __FILE__, __LINE__, day_lag, days_to_delete));
-
-			if ( day_lag > days_to_delete)
-			{
-				if (fi->cmd) {
-					while (camel_pop3_engine_iterate(pop3_store->engine, fi->cmd) > 0) {
-						; /* do nothing - iterating until end */
-					}
+		if (!pop3_get_message_time_from_cache (folder, fi->uid, &message_time)) {
+			d(printf("could not get message time from cache, trying from pop3\n"));
+			message = pop3_get_message (folder, fi->uid, ex);
+			if(message)
+				message_time = message->date + message->date_offset;
+			camel_object_unref((CamelObject *)message);
+		}
 
-					camel_pop3_engine_command_free(pop3_store->engine, fi->cmd);
-					fi->cmd = NULL;
+		time_diff = difftime(temp,message_time);
+		day_lag = time_diff/(60*60*24);
+
+		d(printf("%s(%d): message_time= [%ld]\n", __FILE__, __LINE__, message_time));
+		d(printf("%s(%d): day_lag=[%d] \t days_to_delete=[%d]\n",
+			 __FILE__, __LINE__, day_lag, days_to_delete));
+
+		if ( day_lag > days_to_delete)
+		{
+			if (fi->cmd) {
+				while (camel_pop3_engine_iterate(pop3_store->engine, fi->cmd) > 0) {
+					; /* do nothing - iterating until end */
 				}
-				d(printf("%s(%d): Deleting old messages\n", __FILE__, __LINE__));
-				fi->cmd = camel_pop3_engine_command_new(pop3_store->engine,
+
+				camel_pop3_engine_command_free(pop3_store->engine, fi->cmd);
+					fi->cmd = NULL;
+			}
+			d(printf("%s(%d): Deleting old messages\n", __FILE__, __LINE__));
+			fi->cmd = camel_pop3_engine_command_new(pop3_store->engine,
 									0,
 									NULL,
 									NULL,
 									"DELE %u\r\n",
 									fi->id);
-				/* also remove from cache */
-				if (pop3_store->cache && fi->uid) {
-					camel_data_cache_remove(pop3_store->cache, "cache", fi->uid, NULL);
-				}
+			/* also remove from cache */
+			if (pop3_store->cache && fi->uid) {
+				camel_data_cache_remove(pop3_store->cache, "cache", fi->uid, NULL);
 			}
 		}
 	}
