2.0_alpha release commit
[framework/messaging/email-service.git] / email-core / include / email-core-mail.h
1 /*
2 *  email-service
3 *
4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5 *
6 * Contact: Kyuho Jo <kyuho.jo@samsung.com>, Sunghyun Kwon <sh0701.kwon@samsung.com>
7
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 *
20 */
21
22
23 /******************************************************************************
24  * File :  email-core-mail.h
25  * Desc :  Mail Operation Header
26  *
27  * Auth : 
28  *
29  * History : 
30  *    2006.08.16  :  created
31  *****************************************************************************/
32 #ifndef __EMAIL_CORE_MESSAGE_H__
33 #define __EMAIL_CORE_MESSAGE_H__
34
35 #include "email-storage.h"
36 #include <contacts-svc.h>
37
38 #ifdef __cplusplus
39 extern "C" {
40 #endif /* __cplusplus */
41
42 #ifdef __FEATURE_BULK_DELETE_MOVE_UPDATE_REQUEST_OPTI__
43
44 #define MAX_SUBSET_STRING_SIZE 260      
45 #define MAX_IMAP_COMMAND_LENGTH 1000
46 #define MAX_TAG_SIZE 16
47
48
49 typedef struct _emf_uid_range_set
50 {
51         char *uid_range;
52         unsigned long lowest_uid;
53         unsigned long highest_uid;
54         
55         struct _emf_uid_range_set *next;
56         
57 } email_uid_range_set;
58
59 #endif
60
61
62 struct _m_content_info 
63 {
64         int grab_type;              /*  1 :  download text and get attachment names (no saving attachment) - #define GRAB_TYPE_TEXT       retrieve text and attachment names */
65                               /*  2 :  download attachment - #define GRAB_TYPE_ATTACHMENT retrieve only attachment */
66         int file_no;                /*  attachment no to be download (min : 1) */
67         int report;                 /*  0 : Non 1 : DSN mail 2 : MDN mail 3 : mail to require MDN */
68
69         struct text_data 
70         {
71                 char *plain;            /*  body plain text */
72                 char *plain_charset;    /*  charset of body text */
73                 char *html;             /*  body html text */
74         } text;
75
76         struct attachment_info 
77         {
78                 int   type;                 /*  1 : inline 2 : attachment */
79                 char *name;                 /*  attachment filename */
80                 int   size;                 /*  attachment size */
81                 char *save;                 /*  content saving filename */
82                 int   drm;                  /*  0 : none 1 : object 2 : rights 3 : dcf */
83                 int   drm2;                 /*  0 : none 1 : FL 2 : CD 3 : SSD 4 : SD */
84                 char *attachment_mime_type; /*  attachment mime type */
85                 char *content_id;           /*  mime content id */
86 #ifdef __ATTACHMENT_OPTI__
87                 int   encoding;         /*  encoding  */
88                 char *section;          /*  section number */
89 #endif
90                 struct attachment_info *next;
91         } *file;
92 };
93
94 /**
95  * Download email body from server.
96  *
97  * @param[in] mail_stream       Specifies the mail_stream.
98  * @param[in] mailbox           Specifies the mailbox to contain account ID.
99  * @param[in] mail_id           Specifies the mail ID.
100  * @param[in] callback          Specifies the callback function for retrieving download status.
101  * @param[in] with_attach       Specifies the flag for downloading attachments.
102  * @param[in] limited_size      Specifies the size to be downloaded.
103  * @param[out] err_code         Specifies the error code returned.
104  * @remarks In POP3 case, body and attachment are downloaded in this function.
105  *          In IMAP case, body and attachment list are downloaded and 
106  *          attachments must be downloaded in emcore_download_attachment.
107  * @return This function returns true on success or false on failure.
108  */
109
110 INTERNAL_FUNC int emcore_download_body_multi_sections_bulk(void *mail_stream, int account_id, int mail_id, int verbose, int with_attach, int limited_size, int event_handle , int *err_code);
111
112
113 /**
114  * Download a email nth-attachment from server.
115  *
116  * @param[in] mailbox           Specifies the mailbox to contain account ID.
117  * @param[in] mail_id                   Specifies the mail ID.
118  * @param[in] nth                               Specifies the buffer that a attachment number been saved. the minimum number is "1".
119  * @param[in] callback          Specifies the callback function for retrieving download status.
120  * @param[in] handle                    Specifies the handle for stopping downloading.
121  * @param[out] err_code Specifies the error code returned.
122  * @remarks This function is used for only IMAP mail.
123  * @return This function returns true on success or false on failure.
124  */
125 INTERNAL_FUNC int emcore_download_attachment(int acconut_id, int mail_id, int nth, int *err_code);
126 INTERNAL_FUNC int emcore_mail_add_attachment(int mail_id, email_attachment_data_t *attachment, int *err_code);        /* TODO : Remove duplicated function */
127 INTERNAL_FUNC int emcore_mail_add_attachment_data(int input_mail_id, email_attachment_data_t *input_attachment_data); /* TODO : Remove duplicated function */
128 INTERNAL_FUNC int emcore_delete_mail_attachment(int attachment_id, int *err_code);
129 INTERNAL_FUNC int emcore_get_attachment_info(int attachment_id, email_attachment_data_t **attachment, int *err_code);
130 INTERNAL_FUNC int emcore_get_attachment_data_list(int input_mail_id, email_attachment_data_t **output_attachment_data, int *output_attachment_count);
131 INTERNAL_FUNC int emcore_free_attachment_data(email_attachment_data_t **attachment_data_list, int attachment_data_count, int *err_code);
132
133
134 INTERNAL_FUNC int emcore_move_mail(int mail_ids[], int num, int dst_mailbox_id, int noti_param_1, int noti_param_2, int *err_code);
135
136 #ifdef __FEATURE_PARTIAL_BODY_DOWNLOAD__
137 INTERNAL_FUNC int emcore_insert_pbd_activity(email_event_partial_body_thd *local_activity, int *activity_id, int *err_code) ;
138 INTERNAL_FUNC int emcore_delete_pbd_activity(int account_id, int mail_id, int activity_id, int *err_code);
139 #endif 
140
141 INTERNAL_FUNC int emcore_get_mail_contact_info(email_mail_contact_info_t *contact_info, char *full_address, int *err_code);
142 INTERNAL_FUNC int emcore_get_mail_contact_info_with_update(email_mail_contact_info_t *contact_info, char *full_address, int mail_id, int *err_code);
143 INTERNAL_FUNC int emcore_free_contact_info(email_mail_contact_info_t *contact_info, int *err_code);
144 INTERNAL_FUNC int emcore_sync_contact_info(int mail_id, int *err_code);
145 INTERNAL_FUNC GList *emcore_get_recipients_list(GList *old_recipients_list, char *full_address, int *err_code);
146 INTERNAL_FUNC int emcore_get_mail_address_info_list(int mail_id, email_address_info_list_t **address_info_list, int *err_code);
147 INTERNAL_FUNC int emcore_get_mail_display_name(CTSvalue *contact_name_value, char **contact_display_name);
148 INTERNAL_FUNC int emcore_get_mail_data(int input_mail_id, email_mail_data_t **output_mail_data);
149
150 INTERNAL_FUNC int emcore_update_mail(email_mail_data_t *input_mail_data, email_attachment_data_t *input_attachment_data_list, int input_attachment_count, email_meeting_request_t* input_meeting_request, int sync_server);
151
152 INTERNAL_FUNC int emcore_fetch_flags(int account_id, int mail_id, email_mail_flag_t *mail_flag, int *err_code);
153 INTERNAL_FUNC int emcore_delete_mails_from_local_storage(int account_id, int *mail_ids, int num, int noti_param_1, int noti_param_2, int *err_code);
154 INTERNAL_FUNC int emcore_get_mail_msgno_by_uid(email_account_t *account, email_internal_mailbox_t *mailbox, char *uid, int *msgno, int *err_code);
155 INTERNAL_FUNC int emcore_expunge_mails_deleted_flagged_from_local_storage(int input_mailbox_id);
156 INTERNAL_FUNC int emcore_expunge_mails_deleted_flagged_from_remote_server(int input_account_id, int input_mailbox_id);
157
158 /**
159  * Delete mails.
160  *
161  * @param[in] account_id      Specifies the account id.
162  * @param[in] mail_id         Specifies the array for mail id.
163  * @param[in] num             Specifies the number of id.
164  * @param[in] from_server     Specifies whether mails is deleted from server.
165  * @param[in] callback        Specifies the callback function for delivering status during deleting.
166  * @param[in] noti_param_1    Specifies the first parameter for notification.
167  * @param[in] noti_param_2    Specifies the second parameter for notification.
168  * @param[out] err_code       Specifies the error code returned.
169  * @remarks N/A
170  * @return This function returns true on success or false on failure.
171  */
172 INTERNAL_FUNC int emcore_delete_mail(int account_id, int mail_id[], int num, int from_server, int noti_param_1, int noti_param_2, int *err_code);
173
174 /**
175  * Delete mails.
176  *
177  * @param[in] input_mailbox_id  Specifies the id of mailbox.
178  * @param[in] input_from_server Specifies whether mails is also deleted from server.
179  * @param[out] err_code         Specifies the error code returned.
180  * @remarks N/A
181  * @return This function returns true on success or false on failure.
182  */
183 INTERNAL_FUNC int   emcore_delete_all_mails_of_acount(int input_account_id);
184 INTERNAL_FUNC int   emcore_delete_all_mails_of_mailbox(int input_mailbox_id, int input_from_server, int *err_code);
185
186 INTERNAL_FUNC void  emcore_free_mail_data_list(email_mail_data_t **mail_list, int count);
187 INTERNAL_FUNC void  emcore_free_mail_data(email_mail_data_t *mail);
188 INTERNAL_FUNC void  emcore_free_content_info(struct _m_content_info *cnt_info);
189
190 INTERNAL_FUNC int   emcore_move_mail_on_server(int account_id, int src_mailbox_id,  int mail_ids[], int num, char *dest_mailbox, int *error_code);
191 INTERNAL_FUNC int   emcore_sync_flag_with_server(int mail_id, int *err_code);
192 INTERNAL_FUNC int   emcore_sync_seen_flag_with_server(int mail_ids[], int num, int *err_code);
193
194 INTERNAL_FUNC int   emcore_modify_extra_flag(int mail_id, email_extra_flag_t new_flag, int *err_code);
195 INTERNAL_FUNC int   emcore_modify_flag(int mail_id, email_mail_flag_t new_flag, int sticky_flag, int *err_code);
196 INTERNAL_FUNC int   emcore_set_flags_field(int account_id, int mail_ids[], int num, email_flags_field_type field_type, int value, int *err_code);
197 INTERNAL_FUNC char* emcore_convert_mutf7_to_utf8(char *mailbox_name); 
198 INTERNAL_FUNC int   emcore_convert_string_to_structure(const char *encoded_string, void **struct_var, email_convert_struct_type_e type);
199
200 #ifdef __FEATURE_BULK_DELETE_MOVE_UPDATE_REQUEST_OPTI__
201 INTERNAL_FUNC int   emcore_sync_flags_field_with_server(int mail_ids[], int num, email_flags_field_type field_type, int value, int *err_code);
202 INTERNAL_FUNC int   emcore_move_mail_on_server_ex(int account_id, int src_mailbox_id,  int mail_ids[], int num, int dest_mailbox_id, int *error_code);
203 #endif
204
205 #ifdef __ATTACHMENT_OPTI__
206 INTERNAL_FUNC int emcore_download_attachment_bulk(/*email_mailbox_t *mailbox, */ int account_id, int mail_id, char *nth,  int *err_code);
207 #endif
208 INTERNAL_FUNC int   emcore_mail_filter_by_rule(email_rule_t *filter_info, int *err_code);
209 #ifdef __cplusplus
210 }
211 #endif /* __cplusplus */
212
213 #endif
214 /* EOF */