It turns out, my original code (using the DOM APIs) was fine; the culprit was the MessageWriter performing encoding where I don't want it to: https://github.com/apache/james-mime4j/blob/d7643b9434dfd7897c41fb2d69d28db1bf13ef2f/dom/src/main/java/org/apache/james/mime4j/message/DefaultMessageWriter.java#L234-L235
I created a custom MessageWriter that doesn't perform this conversion, and I have the exact solution I was looking for! On Mon, Jun 1, 2020 at 3:10 PM Eugen Stan <[email protected]> wrote: > Hi Thomas, > > I'm not familiar with this code but have you tried checking the examples > ? Also MimeTokenStream in core package and the JavaDocs and the tests. > > > https://github.com/apache/james-mime4j/blob/master/examples/src/main/java/org/apache/james/mime4j/samples/transform/TransformMessage.java > > > https://github.com/apache/james-mime4j/blob/master/core/src/main/java/org/apache/james/mime4j/stream/MimeTokenStream.java > > > https://github.com/apache/james-mime4j/blob/master/core/src/test/java/org/apache/james/mime4j/stream/MimeTokenStreamTest.java > > > https://github.com/apache/james-mime4j/blob/master/core/src/test/java/org/apache/james/mime4j/stream/MimeTokenStreamReaderTest.java > > > https://github.com/apache/james-mime4j/blob/master/core/src/test/java/org/apache/james/mime4j/stream/StrictMimeTokenStreamTest.java > > > > La 01.06.2020 19:45, Thomas Ehardt a scris: > > I typically use JavaMail to parse eml files, but it is not terribly > > forgiving. I've looked at using Mime4J in some situations, most notably > > when there are invalid headers, and its leniency is great! > > > > For whatever reason, we sometimes get messages where date fields do not > > have quotes around them. For example: > > > > Content-Type: text/plain; name="attachment.txt" > > Content-Transfer-Encoding: base64 > > Content-Disposition: attachment; > > filename="attachment.txt"; > > size=64; > > creation-date=Sat, 30 Apr 2005 19:28:29 -0300; > > modification-date=Sat, 30 Apr 2005 19:28:29 -0300 > > > > JavaMail cannot parse these, but Mime4J can, and the DOM APIs, it will > > easily re-write these headers to be compliant. However, the DOM APIs > > sometimes modify other parts of the source message (seems to be related > to > > parts being labeled "quoted-printable" but not being so), so I've started > > looking at the streaming components. > > > > Ideally, I would like to leave the original message as-is, even if it is > > otherwise not correct, except for these headers (either rewriting all > > headers or just Content-Disposition which appears to be the only place > this > > issue occurs). > > > > Does anyone have an example of how to do such a modification (or > something > > close enough, such as using a stream parser to make a copy of the > original > > message)? > > > > Thanks in advance! > > > >
