00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MESSAGE_H
00021 #define MESSAGE_H
00022
00023 #include <stdio.h>
00024
00025 #include <libetpan.h>
00026 #include <carray.h>
00027
00028 #include "folder-types.h"
00029 #include "message-types.h"
00030
00035 struct XePMessage_s
00036 {
00037 char *data;
00038 size_t len;
00039 XePFolder *folder;
00040 uint32_t muid;
00044 int async;
00045 mailmessage *msg;
00046 struct mailmime *mime;
00047 struct mailimf_fields *fields;
00048 struct mailimf_single_fields *single_fields;
00049 struct mailmime *selected_mime;
00050 struct mailmime *default_mime;
00051 uint32_t flags_set;
00053 uint32_t flags_unset;
00055 char *source_charset;
00056 const char *dest_charset;
00057 int owner;
00060 char *filename;
00061 int fd;
00062 char *msg_data;
00063 size_t msg_size;
00064 };
00065
00066
00069 XePMessage *
00070 a_Message_new(void);
00071
00077 XePMessage *
00078 a_Message_new_from_data_noparse(char *data, size_t size);
00079
00085 XePMessage *
00086 a_Message_new_from_file_noparse(const char *filename);
00087
00088 XePMessage *
00089 a_Message_new_from_data(char *data, size_t len);
00090
00091 XePMessage *
00092 a_Message_new_for_fetching(XePFolder *folder, mailmessage *msg);
00093
00098 XePMessage *
00099 a_Message_new_to_compose(void);
00100
00101 XePMessage *
00102 a_Message_new_to_reply(XePMessage *message);
00103
00104 XePMessage *
00105 a_Message_new_to_forward(XePMessage *message);
00106
00107 XePMessage *
00108 a_Message_new_to_redirect(XePMessage *message);
00109
00110 void
00111 a_Message_free(XePMessage *message);
00112
00113
00114 void
00115 a_Message_free_cb(void *amessage, void *anargout);
00116
00117 XePMessage *
00118 a_Message_clone(XePMessage *message);
00119
00128 int
00129 a_Message_file_open(XePMessage *message);
00130
00137 void
00138 a_Message_file_close(XePMessage *message);
00139
00140 void
00141 a_Message_set_folder(XePMessage *message, XePFolder *folder);
00142
00143 XePFolder *
00144 a_Message_get_folder(XePMessage *message);
00145
00146 char *
00147 a_Message_message_formatted_get_header(mailmessage *msg,
00148 XePMessageHeaderType type,
00149 char *other_header,
00150 char *template,
00151 char *dest_charset);
00152
00153 const char *
00154 a_Message_header_get_name_from_type(XePMessageHeaderType type);
00155
00156 XePMessageHeaderType
00157 a_Message_header_get_type_from_name(const char *header_name);
00158
00165 void
00166 a_Message_header_remove_by_name(XePMessage *message, const char *header_name);
00167
00176 void
00177 a_Message_header_remove(XePMessage *message,
00178 XePMessageHeaderType type,
00179 const char *other_header);
00180
00181
00191 void
00192 a_Message_header_add_by_name(XePMessage *message,
00193 const char *header_name,
00194 const char *header_value,
00195 const char *header_charset);
00196
00208 void
00209 a_Message_header_add(XePMessage *message,
00210 XePMessageHeaderType type,
00211 const char *header_name,
00212 const char *header_value,
00213 const char *header_charset);
00214
00215 int
00216 a_Message_header_set_from(XePMessage *message,
00217 const char *from,
00218 const char *charset);
00219 int
00220 a_Message_header_add_to(XePMessage *message,
00221 const char *to,
00222 const char *charset);
00223
00224 int
00225 a_Message_header_add_cc(XePMessage *message,
00226 const char *cc,
00227 const char *charset);
00228
00229 int
00230 a_Message_header_add_bcc(XePMessage *message,
00231 const char *bcc,
00232 const char *charset);
00233
00234 int
00235 a_Message_header_add_reply_to(XePMessage *message,
00236 const char *reply_to,
00237 const char *charset);
00238
00239 int
00240 a_Message_header_add_other(XePMessage *message,
00241 const char *header_name,
00242 const char *header_value,
00243 const char *header_charset);
00244 int
00245 a_Message_header_set_subject(XePMessage *message,
00246 const char *header_value,
00247 const char *header_charset);
00248
00249 char *
00250 a_Message_message_formatted_get_local_date(struct mailimf_single_fields *fields,
00251 char *template,
00252 char *dest_charset);
00253
00254 char *
00255 a_Message_message_formatted_get_orig_date(struct mailimf_single_fields *fields,
00256 char *template,
00257 char *dest_charset);
00258 char *
00259 a_Message_message_formatted_get_from(struct mailimf_single_fields *fields,
00260 char *template,
00261 char *dest_charset);
00262 char *
00263 a_Message_message_formatted_get_sender(struct mailimf_single_fields *fields,
00264 char *template,
00265 char *dest_charset);
00266 char *
00267 a_Message_message_formatted_get_reply_to(struct mailimf_single_fields *fields,
00268 char *template,
00269 char *dest_charset);
00270 char *
00271 a_Message_message_formatted_get_to(struct mailimf_single_fields *fields,
00272 char *template,
00273 char *dest_charset);
00274 char *
00275 a_Message_message_formatted_get_cc(struct mailimf_single_fields *fields,
00276 char *template,
00277 char *dest_charset);
00278 char *
00279 a_Message_message_formatted_get_bcc(struct mailimf_single_fields *fields,
00280 char *template,
00281 char *dest_charset);
00282
00283 char *
00284 a_Message_message_formatted_get_message_id(struct mailimf_single_fields *fields,
00285 char *template,
00286 char *dest_charset);
00287
00288 char *
00289 a_Message_message_formatted_get_in_reply_to(struct mailimf_single_fields *fields,
00290 char *template,
00291 char *dest_charset);
00292
00293 char *
00294 a_Message_message_formatted_get_references(struct mailimf_single_fields *fields,
00295 char *template,
00296 char *dest_charset);
00297
00298 char *
00299 a_Message_message_formatted_get_subject(struct mailimf_single_fields *fields,
00300 char *template,
00301 char *dest_charset);
00302
00303 char *
00304 a_Message_message_formatted_get_comments(struct mailimf_single_fields *fields,
00305 char *template,
00306 char *dest_charset);
00307
00308 char *
00309 a_Message_message_formatted_get_keywords(struct mailimf_single_fields *fields,
00310 char *template,
00311 char *dest_charset);
00312
00313 char *
00314 a_Message_message_formatted_get_other(struct mailimf_single_fields *fields,
00315 char *template,
00316 char *other_header,
00317 char *dest_charset);
00318
00319 int
00320 a_Message_message_get_subject(struct mailimf_single_fields *fields,
00321 char *dest_charset,
00322 char **subject);
00323
00324 int
00325 a_Message_message_get_from(struct mailimf_single_fields *fields,
00326 char *dest_charset,
00327 char **display_name,
00328 char **email_address);
00329
00330 int
00331 a_Message_message_get_other(struct mailimf_fields *fields,
00332 char *other_header,
00333 char *dest_charset,
00334 char **other);
00335
00336 void
00337 a_Message_decode_selected(XePMessage *message);
00338
00339
00340
00341 int
00342 a_Message_get_bodystructure(XePMessage *message);
00343
00344 int
00345 a_Message_mime_find_default(XePMessage *message);
00346
00347 int
00348 a_Message_fetch_part(XePMessage *message);
00349
00350 int
00351 a_Message_fetch(XePMessage *message);
00352
00353 int
00354 a_Message_flags_change(XePMessage *message);
00355
00356 int
00357 a_Message_array_flags_change(carray *messages);
00358
00359 int
00360 a_Message_mime_is_text(struct mailmime *mime);
00361
00362 char *
00363 a_Message_mime_get_type(struct mailmime_content *content);
00364
00365 struct mailmime *
00366 a_Message_mime_new_from_file(const char *filename,
00367 const char *mime_type,
00368 int mechanism);
00369
00379 struct mailmime *
00380 a_Message_mime_new_from_data(char *data,
00381 size_t size,
00382 const char *mime_type,
00383 int mechanism);
00384
00385 void
00386 a_Message_mime_set_body_text(struct mailmime *mime,
00387 char *data,
00388 size_t size);
00389
00390 struct mailmime *
00391 a_Message_mime_new_multipart(char *subtype, int mechanism);
00392
00393 struct mailmime *
00394 a_Message_mime_new_message(char *subtype, int mechanism);
00395
00396 struct mailmime *
00397 a_Message_mime_add_part_to_selected(XePMessage *message,
00398 char *data,
00399 size_t size,
00400 const char *mime_type,
00401 int mechanism);
00402 int
00403 a_Message_mime_add_parameter(struct mailmime *mime,
00404 const char *param_name,
00405 const char *param_value);
00406
00413 int
00414 a_Message_mime_remove_parameter(struct mailmime *mime,
00415 const char *param_name);
00416
00424 int
00425 a_Message_mime_add_submime(struct mailmime *mime, struct mailmime *submime);
00426
00431 void
00432 a_Message_mime_set_description(struct mailmime *mime, char *description);
00433
00439 int
00440 a_Message_mime_remove_selected(XePMessage *message);
00441
00448 const char *
00449 a_Message_get_first_from_addr_spec(XePMessage *message);
00450
00460 struct mailimf_field *
00461 a_Message_get_field(XePMessage *message,
00462 XePMessageHeaderType type,
00463 const char *other_header);
00464
00465 int
00466 a_Message_data_save_as(XePMessage *message, const char *filename);
00467
00468 void
00469 a_Message_write_to_file(XePMessage *message, FILE *file);
00470
00471 char *
00472 a_Message_write_to_temp_file(XePMessage *message);
00473
00482 void
00483 a_Message_append_to_folder(XePMessage *message);
00484
00485 carray *
00486 a_Message_array_new_for_flags_change(XePFolder *folder,
00487 void **selection,
00488 uint32_t n,
00489 XePMessageFlagsOp flag_op,
00490 int flags);
00491 #endif