- while (!tny_iterator_is_done(iter)) {
-
- part = TNY_MIME_PART(tny_iterator_get_current (iter));
-
- if (tny_mime_part_content_type_is (part, mime_type) &&
- !tny_mime_part_is_attachment (part)) {
- break;
- }
- part = NULL;
- tny_iterator_next (iter);
+ /* no parts? assume it's single-part message */
+ if (tny_iterator_is_done(iter))
+ return TNY_MIME_PART (g_object_ref(G_OBJECT(msg)));
+ else {
+ do {
+ const gchar* content_type;
+ part = TNY_MIME_PART(tny_iterator_get_current (iter));
+
+ if (tny_mime_part_content_type_is (part, mime_type) &&
+ !tny_mime_part_is_attachment (part))
+ break;
+
+ content_type = tny_mime_part_get_content_type (part);
+ if (g_str_has_prefix(content_type, "multipart")) {
+ part = modest_tny_msg_actions_find_body_part_from_mime_part (part,
+ want_html);
+ if (part)
+ break;
+ }
+
+ part = NULL;
+ tny_iterator_next (iter);
+
+ } while (!tny_iterator_is_done(iter));