2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 2005-2012 DINH Viet Hoa and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #include <libetpan/libetpan.h>
27 #define IMAP_SET_MAX_COUNT 500
31 IMAP_FLAG_SEEN
= 1 << 0,
32 IMAP_FLAG_ANSWERED
= 1 << 1,
33 IMAP_FLAG_FLAGGED
= 1 << 2,
34 IMAP_FLAG_DELETED
= 1 << 3,
35 IMAP_FLAG_DRAFT
= 1 << 4,
36 IMAP_FLAG_FORWARDED
= 1 << 5,
37 IMAP_FLAG_SPAM
= 1 << 6,
38 IMAP_FLAG_HAM
= 1 << 7
41 void imap_main_set_timeout(int sec
);
42 void imap_main_init(gboolean skip_ssl_cert_check
);
43 void imap_main_done(gboolean have_connectivity
);
45 void imap_init(Folder
* folder
);
46 void imap_done(Folder
* folder
);
48 int imap_threaded_connect(Folder
* folder
, const char * server
, int port
, ProxyInfo
*proxy_info
);
49 int imap_threaded_connect_ssl(Folder
* folder
, const char * server
, int port
, ProxyInfo
*proxy_info
);
50 int imap_threaded_capability(Folder
*folder
, struct mailimap_capability_data
** caps
);
53 int imap_threaded_connect_cmd(Folder
* folder
, const char * command
,
54 const char * server
, int port
);
56 void imap_threaded_disconnect(Folder
* folder
);
58 int imap_threaded_list(Folder
* folder
, const char * base
,
59 const char * wildcard
,
61 int imap_threaded_lsub(Folder
* folder
, const char * base
,
62 const char * wildcard
,
64 int imap_threaded_login(Folder
* folder
,
65 const char * login
, const char * password
,
67 int imap_threaded_status(Folder
* folder
, const char * mb
,
68 struct mailimap_mailbox_data_status
** data_status
,
70 int imap_threaded_close(Folder
* folder
);
72 int imap_threaded_noop(Folder
* folder
, unsigned int * p_exists
,
73 unsigned int *p_recent
,
74 unsigned int *p_expunge
,
75 unsigned int *p_unseen
,
76 unsigned int *p_uidnext
,
77 unsigned int *p_uidval
);
78 int imap_threaded_starttls(Folder
* folder
, const gchar
*host
, int port
);
79 int imap_threaded_create(Folder
* folder
, const char * mb
);
80 int imap_threaded_rename(Folder
* folder
,
81 const char * mb
, const char * new_name
);
82 int imap_threaded_delete(Folder
* folder
, const char * mb
);
83 int imap_threaded_select(Folder
* folder
, const char * mb
,
84 gint
* exists
, gint
* recent
, gint
* unseen
,
85 guint32
* uid_validity
, gint
* can_create_flags
,
87 int imap_threaded_examine(Folder
* folder
, const char * mb
,
88 gint
* exists
, gint
* recent
, gint
* unseen
,
89 guint32
* uid_validity
);
90 int imap_threaded_subscribe(Folder
* folder
, const char * mb
,
94 IMAP_SEARCH_TYPE_SIMPLE
,
95 IMAP_SEARCH_TYPE_SEEN
,
96 IMAP_SEARCH_TYPE_UNSEEN
,
97 IMAP_SEARCH_TYPE_ANSWERED
,
98 IMAP_SEARCH_TYPE_FLAGGED
,
99 IMAP_SEARCH_TYPE_DELETED
,
100 IMAP_SEARCH_TYPE_FORWARDED
,
101 IMAP_SEARCH_TYPE_SPAM
,
103 IMAP_SEARCH_TYPE_KEYED
,
106 typedef struct mailimap_search_key IMAPSearchKey
;
109 IMAP_SEARCH_CRITERIA_ALL
,
110 IMAP_SEARCH_CRITERIA_READ
,
111 IMAP_SEARCH_CRITERIA_UNREAD
,
112 IMAP_SEARCH_CRITERIA_NEW
,
113 IMAP_SEARCH_CRITERIA_MARKED
,
114 IMAP_SEARCH_CRITERIA_DELETED
,
115 IMAP_SEARCH_CRITERIA_REPLIED
,
116 IMAP_SEARCH_CRITERIA_TAG
,
117 IMAP_SEARCH_CRITERIA_SUBJECT
,
118 IMAP_SEARCH_CRITERIA_FROM
,
119 IMAP_SEARCH_CRITERIA_TO
,
120 IMAP_SEARCH_CRITERIA_CC
,
121 IMAP_SEARCH_CRITERIA_AGE_GREATER
,
122 IMAP_SEARCH_CRITERIA_AGE_LOWER
,
123 IMAP_SEARCH_CRITERIA_BODY
,
124 IMAP_SEARCH_CRITERIA_MESSAGE
,
125 IMAP_SEARCH_CRITERIA_HEADER
,
126 IMAP_SEARCH_CRITERIA_SIZE_GREATER
,
127 IMAP_SEARCH_CRITERIA_SIZE_SMALLER
,
130 IMAPSearchKey
* imap_search_new(gint criteria
,
134 IMAPSearchKey
* imap_search_not(IMAPSearchKey
* key
);
135 IMAPSearchKey
* imap_search_or(IMAPSearchKey
* l
, IMAPSearchKey
* r
);
136 IMAPSearchKey
* imap_search_and(IMAPSearchKey
* l
, IMAPSearchKey
* r
);
137 void imap_search_free(IMAPSearchKey
* search
);
139 int imap_threaded_search(Folder
* folder
, int search_type
, IMAPSearchKey
* key
,
140 const char *charset
, struct mailimap_set
* set
, clist
** result
);
142 int imap_threaded_fetch_uid(Folder
* folder
, uint32_t first_index
,
145 void imap_fetch_uid_list_free(carray
* uid_list
);
147 int imap_threaded_fetch_uid_flags(Folder
* folder
, uint32_t first_index
,
148 carray
** fetch_result
);
150 void imap_fetch_uid_flags_list_free(carray
* uid_flags_list
);
152 int imap_threaded_fetch_content(Folder
* folder
, uint32_t msg_index
,
154 const char * filename
);
156 struct imap_fetch_env_info
{
163 int imap_threaded_fetch_env(Folder
* folder
, struct mailimap_set
* set
,
164 carray
** p_env_list
);
166 void imap_fetch_env_free(carray
* env_list
);
168 int imap_threaded_append(Folder
* folder
, const char * mailbox
,
169 const char * filename
,
170 struct mailimap_flag_list
* flag_list
,
173 int imap_threaded_expunge(Folder
* folder
);
175 int imap_threaded_copy(Folder
* folder
, struct mailimap_set
* set
,
176 const char * mb
, struct mailimap_set
**source
,
177 struct mailimap_set
**dest
);
179 int imap_threaded_store(Folder
* folder
, struct mailimap_set
* set
,
180 struct mailimap_store_att_flags
* store_att_flags
);
182 void imap_threaded_cancel(Folder
* folder
);