Stefan Schulze Frielinghaus
Fri, 12 Mar 2010 01:28:21 -0800
On Do, 2010-03-11 at 12:58 -0500, Jeffrey Stedfast wrote: > Stefan Schulze Frielinghaus wrote: > > On Do, 2010-03-11 at 10:45 -0500, Jeffrey Stedfast wrote: > > > >> On 03/11/2010 09:16 AM, Stefan Schulze Frielinghaus wrote: > >> > >>> Hi, > >>> > >>> Is it possible to get raw access to an email (including header and > >>> body)? Or, if that is not possible, raw access to the body of the > >>> message? > >>> > >>> Raw access is important for me because I want to write a plugin which > >>> uses some kind of cryptography, e.g. character encoding is important to > >>> me. > >>> > >>> > >> You can get the raw message from a CamelMimeMessage object by writing it > >> to a stream buffer. > >> > > > > This sounds great. I'm quite new to evolution could you give me a hint > > how to do that? I'm starting with an EMEventTargetMessage object where I > > can get an CamelMimeMessage object from. But how can I dump this one > > into a stream? Writing to a stream requires a buffer of type gchar, but > > I have a CamelMimeMessage object and I even do not know the length of > > the message. What function calls could I look at? > > > > CamelStream *stream = camel_stream_mem_new (); > camel_data_wrapper_write_to_stream (message, stream); > > It's been 4 or 5 years since I did any evo hacking, so the above code > might not be quite right - but it should give you a general idea.
Ah perfect, thanks! I was not aware of a function like
camel_data_wrapper_write_to_stream().
Just for the records if someone else is looking for a similar solution:
CamelStreamMem *stream = (CamelStreamMem *)camel_stream_mem_new ();
camel_data_wrapper_write_to_stream ((CamelDataWrapper*)t->message,
(CamelStream *)stream);
And then you can access the message via
stream->buffer->data;
and
stream->buffer->len;
cheers,
Stefan
_______________________________________________
Evolution-hackers mailing list
Evolution-hackers@gnome.org
http://mail.gnome.org/mailman/listinfo/evolution-hackers