Пример #1
0
static void
accumulate_body (MuMsg *msg, MuMsgPart *mpart, BodyData *bdata)
{
	char *txt;
	gboolean err;

	/* if it looks like an attachment, skip it */
	if (mpart->part_type & MU_MSG_PART_TYPE_ATTACHMENT)
		return;

	if (!GMIME_IS_PART(mpart->data))
		return;

	txt = NULL;
	err = TRUE;

	if (!bdata->want_html &&
	    (mpart->part_type & MU_MSG_PART_TYPE_TEXT_PLAIN))
		txt = mu_msg_mime_part_to_string (
			(GMimePart*)mpart->data, &err);
	else if (bdata->want_html &&
		 (mpart->part_type & MU_MSG_PART_TYPE_TEXT_HTML))
		txt = mu_msg_mime_part_to_string (
			(GMimePart*)mpart->data, &err);
	if (!err && txt)
		bdata->gstr = g_string_append (bdata->gstr, txt);

	g_free (txt);
}
Пример #2
0
static void
accumulate_text_part (MuMsg *msg, MuMsgPart *part, GString **gstrp)
{
	GMimeContentType *ctype;
	gboolean err;
	char *txt;
	ctype = g_mime_object_get_content_type ((GMimeObject*)part->data);
	if (!g_mime_content_type_is_type (ctype, "text", "plain"))
		return; /* not plain text */
	txt = mu_msg_mime_part_to_string
		((GMimePart*)part->data, &err);
	if (txt)
		g_string_append (*gstrp, txt);
	g_free (txt);
}
Пример #3
0
char*
mu_msg_part_get_text (MuMsg *msg, MuMsgPart *self, MuMsgOptions opts)
{
	GMimeObject  *mobj;
	GMimeMessage *mime_msg;
	gboolean err;

	g_return_val_if_fail (msg, NULL);
	g_return_val_if_fail (self && self->data, NULL);

	mobj = (GMimeObject*)self->data;

	err = FALSE;
	if (GMIME_IS_PART (mobj)) {
		if (self->part_type & MU_MSG_PART_TYPE_TEXT_PLAIN)
			return mu_msg_mime_part_to_string ((GMimePart*)mobj, &err);
		else
			return NULL; /* non-text MimePart */
	}

	mime_msg = NULL;
	if (GMIME_IS_MESSAGE_PART (mobj))
		mime_msg = g_mime_message_part_get_message
			((GMimeMessagePart*)mobj);
	else if (GMIME_IS_MESSAGE (mobj))
		mime_msg = (GMimeMessage*)mobj;

	if (mime_msg) {
		GString *gstr;
		gstr = g_string_sized_new (4096);
		handle_children (msg, mime_msg, opts, self->index,
 				 (MuMsgPartForeachFunc)accumulate_text,
				 &gstr);
		return g_string_free (gstr, FALSE);
	} else {
		g_warning ("%s: cannot get text for %s",
			   __FUNCTION__, G_OBJECT_TYPE_NAME (mobj));
		return NULL;
	}
}
Пример #4
0
char*
mu_msg_part_get_text (MuMsg *msg, MuMsgPart *self, MuMsgOptions opts)
{
	GMimeObject  *mobj;
	GMimeMessage *mime_msg;
	gboolean err;

	g_return_val_if_fail (msg, NULL);
	g_return_val_if_fail (self && GMIME_IS_OBJECT(self->data),
			      NULL);

	mobj = (GMimeObject*)self->data;

	err = FALSE;
	if (GMIME_IS_PART (mobj)) {
		if (self->part_type & MU_MSG_PART_TYPE_TEXT_PLAIN)
			return mu_msg_mime_part_to_string ((GMimePart*)mobj,
							   &err);
		else
			return NULL; /* non-text MimePart */
	}

	mime_msg = NULL;

	if (GMIME_IS_MESSAGE_PART (mobj))
		mime_msg = g_mime_message_part_get_message
			((GMimeMessagePart*)mobj);
	else if (GMIME_IS_MESSAGE (mobj))
		mime_msg = (GMimeMessage*)mobj;

	/* apparently, g_mime_message_part_get_message may still
	 * return NULL */
 	if (mime_msg)
		return get_text_from_mime_msg (msg, mime_msg, opts);
	return NULL;
}