[evolution-data-server/email-factory] Add POP3 to a individual folder than to Local INBOX.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/email-factory] Add POP3 to a individual folder than to Local INBOX.
- Date: Wed, 18 May 2011 12:25:13 +0000 (UTC)
commit 968d373f149c8b4eca24d0f1d70346d250fbc15e
Author: Srinivasa Ragavan <sragavan gnome org>
Date: Wed May 18 17:54:10 2011 +0530
Add POP3 to a individual folder than to Local INBOX.
mail/daemon/e-mail-data-store.c | 2 +
mail/daemon/mail-ops.c | 49 +++++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+), 0 deletions(-)
---
diff --git a/mail/daemon/e-mail-data-store.c b/mail/daemon/e-mail-data-store.c
index 0645491..e669416 100644
--- a/mail/daemon/e-mail-data-store.c
+++ b/mail/daemon/e-mail-data-store.c
@@ -101,6 +101,8 @@ construct_mail_store_path (char *full_name)
path[i] = '_';
else if (path[i] == '(')
path[i] = '_';
+ else if (path[i] == '@')
+ path[i] = '_';
else if (path[i] == ')')
path[i] = '_';
else if (path[i] == ' ')
diff --git a/mail/daemon/mail-ops.c b/mail/daemon/mail-ops.c
index 9232857..06d7509 100644
--- a/mail/daemon/mail-ops.c
+++ b/mail/daemon/mail-ops.c
@@ -239,6 +239,51 @@ uid_cachename_hack (CamelStore *store)
return filename;
}
+static CamelFolder *
+fetch_pop3_folder (const char *uri)
+{
+ CamelStore *local = e_mail_local_get_store ();
+ CamelFolder *destination=NULL;
+ EAccountList *accounts;
+ EAccount *account = NULL;
+ EIterator *iter;
+ const char *email;
+ char *folder_name;
+
+ accounts = e_get_account_list ();
+ iter = e_list_get_iterator ((EList *) accounts);
+ while (e_iterator_is_valid (iter)) {
+ account = (EAccount *) e_iterator_get (iter);
+
+ if (account->source->url && strcmp (account->source->url, uri) == 0) {
+ break;
+ }
+
+ e_iterator_next (iter);
+ account = NULL;
+ }
+
+ g_object_unref (iter);
+ email = e_account_get_string(account, E_ACCOUNT_ID_ADDRESS);
+ folder_name = g_strdup_printf ("%s/Inbox", email);
+
+ destination = camel_store_get_folder (local, folder_name, 0, NULL);
+ if (!destination) {
+ /* If its first time, create that folder. */
+ CamelFolderInfo *info;
+
+ info = camel_store_create_folder (local, NULL, folder_name, NULL);
+ if (!info)
+ g_warning ("Unable to create POP3 folder: %s\n", folder_name);
+ else {
+ destination = camel_store_get_folder (local, folder_name, 0, NULL);
+ }
+ }
+ g_free (folder_name);
+
+ return destination;
+}
+
static gchar *
fetch_mail_desc (struct _fetch_mail_msg *m)
{
@@ -298,6 +343,10 @@ fetch_mail_exec (struct _fetch_mail_msg *m)
if (cache) {
GPtrArray *folder_uids, *cache_uids, *uids;
+ g_object_unref (fm->destination);
+ fm->destination = fetch_pop3_folder (m->source_uri);
+ g_object_ref (fm->destination);
+
folder_uids = camel_folder_get_uids (folder);
cache_uids = camel_uid_cache_get_new_uids (cache, folder_uids);
if (cache_uids) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]