static struct mailmime * get_file_part(const char * filename, const char * mime_type, const char * text, size_t length) { char * disposition_name; int encoding_type; struct mailmime_disposition * disposition; struct mailmime_mechanism * encoding; struct mailmime_content * content; struct mailmime * mime; struct mailmime_fields * mime_fields; disposition_name = NULL; if (filename != NULL) { disposition_name = strdup(filename); } disposition = mailmime_disposition_new_with_data(MAILMIME_DISPOSITION_TYPE_ATTACHMENT, disposition_name, NULL, NULL, NULL, (size_t) -1); content = mailmime_content_new_with_str(mime_type); encoding_type = MAILMIME_MECHANISM_BASE64; encoding = mailmime_mechanism_new(encoding_type, NULL); mime_fields = mailmime_fields_new_with_data(encoding, NULL, NULL, disposition, NULL); mime = part_new_empty(content, mime_fields, NULL, 1); mailmime_set_body_text(mime, (char *) text, length); return mime; }
struct mailmime_disposition * mailmime_disposition_new_filename(int type, char * filename) { return mailmime_disposition_new_with_data(type, filename, NULL, NULL, NULL, (size_t) -1); }
struct mailmime_fields * mailmime_fields_new_filename(int dsp_type, char * filename, int encoding_type) { struct mailmime_disposition * dsp; struct mailmime_mechanism * encoding; struct mailmime_fields * mime_fields; dsp = mailmime_disposition_new_with_data(dsp_type, filename, NULL, NULL, NULL, (size_t) -1); if (dsp == NULL) goto err; encoding = mailmime_mechanism_new(encoding_type, NULL); if (encoding == NULL) goto free_dsp; mime_fields = mailmime_fields_new_with_data(encoding, NULL, NULL, dsp, NULL); if (mime_fields == NULL) goto free_encoding; return mime_fields; free_encoding: mailmime_encoding_free(encoding); free_dsp: mailmime_disposition_free(dsp); err: return NULL; }
static struct mailmime * get_text_part(const char * mime_type, const char * text, size_t length, int encoding_type) { struct mailmime_fields * mime_fields; struct mailmime * mime; struct mailmime_content * content; struct mailmime_parameter * param; struct mailmime_disposition * disposition; struct mailmime_mechanism * encoding; encoding = mailmime_mechanism_new(encoding_type, NULL); disposition = mailmime_disposition_new_with_data(MAILMIME_DISPOSITION_TYPE_INLINE, NULL, NULL, NULL, NULL, (size_t) -1); mime_fields = mailmime_fields_new_with_data(encoding, NULL, NULL, disposition, NULL); content = mailmime_content_new_with_str(mime_type); param = mailmime_param_new_with_data("charset", "utf-8"); clist_append(content->ct_parameters, param); mime = part_new_empty(content, mime_fields, NULL, 1); mailmime_set_body_text(mime, (char *) text, length); return mime; }