james-mime4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefano Bagnara (JIRA)" <mime4j-...@james.apache.org>
Subject [jira] [Commented] (MIME4J-282) DefaultMessageWriter.writeMessage doesn't produces the same original eml
Date Wed, 26 Sep 2018 07:51:00 GMT

    [ https://issues.apache.org/jira/browse/MIME4J-282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16628375#comment-16628375

Stefano Bagnara commented on MIME4J-282:

You are doing something wrong.

Mime4j has its own, compliant, way to do QP Encoding. There is no unique way to do the QP
encoding (you can use the line length you prefer, you can decide which char to encode or not.

So, you can't expect to "decode a third party qp encoded message" and "reencode it" in order
to obtain the same encoded message: that's not the point of QP encoding. THe point is that
any encoded message MUST represent the same original message (when decoded). The encoding
is just a protection.

Both your eml decodes to the same message one you use QP decode. The mime4j encoded is just
more "robust" because it will resist some bad/wrong software that keeps breaking the dots
found at the beginning of a line.


> DefaultMessageWriter.writeMessage doesn't produces the same original eml
> ------------------------------------------------------------------------
>                 Key: MIME4J-282
>                 URL: https://issues.apache.org/jira/browse/MIME4J-282
>             Project: James Mime4j
>          Issue Type: Bug
>          Components: dom
>    Affects Versions: 0.8.1
>            Reporter: Raffaele Gambelli
>            Priority: Major
>         Attachments: mirmps_1.eml, mirmps_1_mime4j.eml
> I'm using mime4j to parse messages starting from a javax.mail.Message.
> Then, my application needs to store in a String the original message too, that is the
"eml", I did it in this way:
> {code:java}
> ByteArrayOutputStream baos = new ByteArrayOutputStream();
>  MessageWriter writer = new DefaultMessageWriter();
>  writer.writeMessage(message, baos);
>  this.originalMessage = baos.toString();{code}
> Unfortunately I've seen that above code, does QP encoding so the final output is different
from the original message.
> But in this way, the final eml results in a different eml from the original one, so for
example the digital signature is not more valid.
> For example if you open the generated eml with a client like Outlook, it warns user that
the digital signature is not valid.
> Now, I would like to know if exists a way to, starting from an eml generated with the
above code, generate the correct version, so without QP encoding.
> Attached to this issue, I put an original eml and that one generated with above code,
> Maybe this issue is related or caused to this other #MIME4J-186 ?

This message was sent by Atlassian JIRA

View raw message