Before I file another MIME4J issue I would like to ask your opinion.
At the moment we use Sun's JavaMail API to process and manipulate e-mails. I would like to go away from JavaMail so I am currently evaluating MIME4J to see if is an alternative. So far it looks very promising.
Our use case is typically the following: parse an incoming message; run the message through a workflow that manipulates it (can be: apply a signature, add/remove/replace an attachment, etc.); re-send and/or archive the message.
Now the problem is that I would basically like to create a new Message object that should contain some parts from the original message and some new parts. The original message should not modified though. In other words I would like to create a Message that shares some Part objects with another Message.
Currently this is not possible because Part holds a reference to a parent Entity (getParent() and setParent()) and a Part can of course have only one parent.
So the question is do you think it would be possible to remove this parent reference?
In the current release the parent entity is used for two purposes:
1) determine the message boundary and charset in Multipart.writeTo()
2) in Entity.getMimeType() to ask the parent if the entity does not have a Content-Type header field.
Number one could be resolved by adding an "Entity parent" parameter to Body.writeTo(). But I am not sure about number two. Would it suffice to return null instead of delegating to a parent entity?
I have attached a patch for #1 to illustrate what I mean. Hope it gets through the mailing list..