+
+guint64
+modest_tny_msg_estimate_size (const gchar *plain_body, const gchar *html_body,
+ guint64 parts_count,
+ guint64 parts_size)
+{
+ guint64 result;
+
+ /* estimation of headers size */
+ result = 1024;
+
+ /* We add a 20% of size due to the increase in 7bit encoding */
+ if (plain_body) {
+ result += strlen (plain_body) * 120 / 100;
+ }
+ if (html_body) {
+ result += strlen (html_body) * 120 / 100;
+ }
+
+ /* 256 bytes per additional part because of their headers */
+ result += parts_count * 256;
+
+ /* 150% of increase per encoding */
+ result += parts_size * 3 / 2;
+
+ return result;
+}
+
+GSList *
+modest_tny_msg_header_get_all_recipients_list (TnyHeader *header)
+{
+ GSList *recipients = NULL;
+ gchar *from = NULL, *to = NULL, *cc = NULL, *bcc = NULL;
+ gchar *after_remove;
+ GString *buffer;
+ gboolean add_separator = TRUE;
+
+ if (header == NULL)
+ return NULL;
+
+ buffer = g_string_new ("");
+
+ from = tny_header_dup_from (header);
+ to = tny_header_dup_to (header);
+ cc = tny_header_dup_cc (header);
+ bcc = tny_header_dup_bcc (header);
+
+ recipients = NULL;
+ if (from) {
+ buffer = g_string_append (buffer, from);
+ add_separator = TRUE;
+ }
+ if (to) {
+ if (add_separator)
+ buffer = g_string_append (buffer, "; ");
+ else
+ add_separator = TRUE;
+
+ buffer = g_string_append (buffer, to);
+ }
+ if (cc) {
+ if (add_separator)
+ buffer = g_string_append (buffer, "; ");
+ else
+ add_separator = TRUE;
+
+ buffer = g_string_append (buffer, cc);
+ }
+ if (bcc) {
+ if (add_separator)
+ buffer = g_string_append (buffer, "; ");
+ else
+ add_separator = TRUE;
+
+ buffer = g_string_append (buffer, bcc);
+ }
+
+ after_remove = modest_text_utils_remove_duplicate_addresses (buffer->str);
+ g_string_free (buffer, TRUE);
+
+ recipients = modest_text_utils_split_addresses_list (after_remove);
+ g_free (after_remove);
+
+ return recipients;
+}
+
+GSList *
+modest_tny_msg_get_all_recipients_list (TnyMsg *msg)
+{
+ TnyHeader *header = NULL;
+ GSList *recipients = NULL;
+
+ if (msg == NULL)
+ return NULL;
+
+ header = tny_msg_get_header (msg);
+ if (header == NULL)
+ return NULL;
+
+ recipients = modest_tny_msg_header_get_all_recipients_list (header);
+ g_object_unref (header);
+
+ return recipients;
+}
+