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

Reply via email to