Modifying the contents of a message

Axel axel.grude at
Thu Jan 26 18:00:05 UTC 2012

On 26/01/12 17:47, Jonathan Protzenko wrote:
> On 01/26/2012 06:17 PM, David Bienvenu wrote:
>> On 1/26/2012 7:19 AM, Jonathan Protzenko wrote:
>>> Hi everyone,
>>> Ever since I started reading the and 
>>> newsgroups, a recurring question about Thunderbird has been 
>>> "how can I modify the contents of a message" from an addon? I recently (less than 
>>> 7 days ago) replied to this question twice, and my answer was basically:
>>> - inject a message in a local folder,
>>> - copy it to the destination folder,
>>> - remove the old message.
>>> I'm not sure there's a better way, but I guess not. My question is: could we make 
>>> that easier by implementing, say, in C++, nsIMsgFolder::InjectMessageFromStream, 
>>> making it of course scriptable? The arguments are:
>>> - this is something an addon will want to do, and it seems legitimate that they 
>>> should want to do so,
>>> - it's better to provide a function for that than to have someone do it real, real 
>>> wrong.
>> Yes, it would be great to provide an easy way for extensions to do this, because 
>> extensions often forget about things like IMAP, and going forward, things like 
>> pluggable stores.
>> I think JS code to do this would be better than c++ methods. I think there's 
>> sufficient mechanisms in the backend to do this already since detach attachment 
>> does it, but additional method(s) would be helpful, we can add them.
> I'm not sure what is the right way to do this from JS. Do you have some pseudo-code 
> describing how one should proceed if they want to modify, for instance, one of the 
> headers? I somehow thought that the code for detach was only calling 
> nsMessenger::DetachAttachment and that the rest of the process was driven from C++.
> Thanks,
> jonathan
Jon, did you get my other email with the pseudo code?

Let's say you create a new extended interface nsIMsgDBHdrWriteable. and add a clone 
method to an email. The clone would be in memory until finalized and stored.

newmail = mail.clone()
hdr = newmail .QueryInterface(Ci.nsIMsgDBHdrWriteable);
msg.writeHeaderField( 'Subject', "bla bla");

something along these lines?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the tb-planning mailing list