2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 2005-2023 the Claws Mail team and DINH Viet Hoa
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>
29 IMAP_FLAG_SEEN
= 1 << 0,
30 IMAP_FLAG_ANSWERED
= 1 << 1,
31 IMAP_FLAG_FLAGGED
= 1 << 2,
32 IMAP_FLAG_DELETED
= 1 << 3,
33 IMAP_FLAG_DRAFT
= 1 << 4,
34 IMAP_FLAG_FORWARDED
= 1 << 5,
35 IMAP_FLAG_SPAM
= 1 << 6,
36 IMAP_FLAG_HAM
= 1 << 7
39 void imap_main_set_timeout(int sec
);
40 void imap_main_init(gboolean skip_ssl_cert_check
);
41 void imap_main_done(gboolean have_connectivity
);
43 void imap_init(Folder
* folder
);
44 void imap_done(Folder
* folder
);
46 int imap_threaded_connect(Folder
* folder
, const char * server
, int port
, ProxyInfo
*proxy_info
);
47 int imap_threaded_connect_ssl(Folder
* folder
, const char * server
, int port
, ProxyInfo
*proxy_info
);
48 int imap_threaded_capability(Folder
*folder
, struct mailimap_capability_data
** caps
);
51 int imap_threaded_connect_cmd(Folder
* folder
, const char * command
,
52 const char * server
, int port
);
54 void imap_threaded_disconnect(Folder
* folder
);
56 int imap_threaded_list(Folder
* folder
, const char * base
,
57 const char * wildcard
,
59 int imap_threaded_lsub(Folder
* folder
, const char * base
,
60 const char * wildcard
,
62 int imap_threaded_login(Folder
* folder
,
63 const char * login
, const char * password
,
65 int imap_threaded_status(Folder
* folder
, const char * mb
,
66 struct mailimap_mailbox_data_status
** data_status
,
68 int imap_threaded_close(Folder
* folder
);
70 int imap_threaded_noop(Folder
* folder
, unsigned int * p_exists
,
71 unsigned int *p_recent
,
72 unsigned int *p_expunge
,
73 unsigned int *p_unseen
,
74 unsigned int *p_uidnext
,
75 unsigned int *p_uidval
);
76 int imap_threaded_starttls(Folder
* folder
, const gchar
*host
, int port
);
77 int imap_threaded_create(Folder
* folder
, const char * mb
);
78 int imap_threaded_rename(Folder
* folder
,
79 const char * mb
, const char * new_name
);
80 int imap_threaded_delete(Folder
* folder
, const char * mb
);
81 int imap_threaded_select(Folder
* folder
, const char * mb
,
82 gint
* exists
, gint
* recent
, gint
* unseen
,
83 guint32
* uid_validity
, gint
* can_create_flags
,
85 int imap_threaded_examine(Folder
* folder
, const char * mb
,
86 gint
* exists
, gint
* recent
, gint
* unseen
,
87 guint32
* uid_validity
);
88 int imap_threaded_subscribe(Folder
* folder
, const char * mb
,
92 IMAP_SEARCH_TYPE_SIMPLE
,
93 IMAP_SEARCH_TYPE_SEEN
,
94 IMAP_SEARCH_TYPE_UNSEEN
,
95 IMAP_SEARCH_TYPE_ANSWERED
,
96 IMAP_SEARCH_TYPE_FLAGGED
,
97 IMAP_SEARCH_TYPE_DELETED
,
98 IMAP_SEARCH_TYPE_FORWARDED
,
99 IMAP_SEARCH_TYPE_SPAM
,
101 IMAP_SEARCH_TYPE_KEYED
,
104 typedef struct mailimap_search_key IMAPSearchKey
;
107 IMAP_SEARCH_CRITERIA_ALL
,
108 IMAP_SEARCH_CRITERIA_READ
,
109 IMAP_SEARCH_CRITERIA_UNREAD
,
110 IMAP_SEARCH_CRITERIA_NEW
,
111 IMAP_SEARCH_CRITERIA_MARKED
,
112 IMAP_SEARCH_CRITERIA_DELETED
,
113 IMAP_SEARCH_CRITERIA_REPLIED
,
114 IMAP_SEARCH_CRITERIA_TAG
,
115 IMAP_SEARCH_CRITERIA_SUBJECT
,
116 IMAP_SEARCH_CRITERIA_FROM
,
117 IMAP_SEARCH_CRITERIA_TO
,
118 IMAP_SEARCH_CRITERIA_CC
,
119 IMAP_SEARCH_CRITERIA_AGE_GREATER
,
120 IMAP_SEARCH_CRITERIA_AGE_LOWER
,
121 IMAP_SEARCH_CRITERIA_BODY
,
122 IMAP_SEARCH_CRITERIA_MESSAGE
,
123 IMAP_SEARCH_CRITERIA_HEADER
,
124 IMAP_SEARCH_CRITERIA_SIZE_GREATER
,
125 IMAP_SEARCH_CRITERIA_SIZE_SMALLER
,
128 IMAPSearchKey
* imap_search_new(gint criteria
,
132 IMAPSearchKey
* imap_search_not(IMAPSearchKey
* key
);
133 IMAPSearchKey
* imap_search_or(IMAPSearchKey
* l
, IMAPSearchKey
* r
);
134 IMAPSearchKey
* imap_search_and(IMAPSearchKey
* l
, IMAPSearchKey
* r
);
135 void imap_search_free(IMAPSearchKey
* search
);
137 int imap_threaded_search(Folder
* folder
, int search_type
, IMAPSearchKey
* key
,
138 const char *charset
, struct mailimap_set
* set
, clist
** result
);
140 int imap_threaded_fetch_uid(Folder
* folder
, uint32_t first_index
,
143 void imap_fetch_uid_list_free(carray
* uid_list
);
145 int imap_threaded_fetch_uid_flags(Folder
* folder
, uint32_t first_index
,
146 carray
** fetch_result
);
148 void imap_fetch_uid_flags_list_free(carray
* uid_flags_list
);
150 int imap_threaded_fetch_content(Folder
* folder
, uint32_t msg_index
,
152 const char * filename
);
154 struct imap_fetch_env_info
{
161 int imap_threaded_fetch_env(Folder
* folder
, struct mailimap_set
* set
,
162 carray
** p_env_list
);
164 void imap_fetch_env_free(carray
* env_list
);
166 int imap_threaded_append(Folder
* folder
, const char * mailbox
,
167 const char * filename
,
168 struct mailimap_flag_list
* flag_list
,
171 int imap_threaded_expunge(Folder
* folder
);
173 int imap_threaded_copy(Folder
* folder
, struct mailimap_set
* set
,
174 const char * mb
, struct mailimap_set
**source
,
175 struct mailimap_set
**dest
);
177 int imap_threaded_store(Folder
* folder
, struct mailimap_set
* set
,
178 struct mailimap_store_att_flags
* store_att_flags
);
180 void imap_threaded_cancel(Folder
* folder
);