Hi Thomas, I think having a "no modification message writer" as part directly of MIME4J could be a great plus.
Do you think you can contribute it, if relevant? Cheers, Benoit On 02/06/2020 07:02, Thomas Ehardt wrote: > 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! >>> >>
