Alastair Poole <[EMAIL PROTECTED]> wrote:

> Basically, mu_message_get_body(msg, &body); mu_body_get_stream(body,
> &stream); mu_stream_read(stream, buf, sizeof(buf) 0, &ret);  

That's wrong. The stream obtained by mu_body_get_stream returns all
characters as they appear in the body -- it does not attept to decode or
to convert anything. If you wish to decode the stream, create a
decoder stream and give it the body stream as its input. Reading from
the decoder stream will return decoded characters (of course, provided
that you select the right type of the stream - eg. base64
vs. quoted-printable and vice versa). Another note is that you cannot
simply get an arbitrary body stream and feed it into a decoder, since
the message might be plain text. In general, you should first check if
the message is a multy-part one. If so, calling mu_message_get_part will
give you the desired part of the message.  Then, by analysing its
headers you can deduce the encoding type and charset. Finally, using
these data, you create an appropriate decoding stream and decode the
message part in question.

Please see examples/base64.c and examples/decode2047.c for simple
examples on using decoding streams.

Please see mail/decode.c and mh/mhn.c for examples on how to handle multipart
messages and encoded headers.

Regards,
Sergey


_______________________________________________
Bug-mailutils mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-mailutils

Reply via email to