如何比较两个MimeMessage.java对象以确保它们相同?

时间:2019-03-20 16:58:12

标签: java javamail

我们正在从旧系统切换到新系统,并丢弃一条路径(新路径),直到它与旧系统匹配为止。旧系统以复杂的方式创建MimeMessage,但不幸的是MimeMessage不仅是数据对象(尽管我认为应该是,希望它是)。

我需要从MimeMessage中提取哪些数据进行比较以确保两个系统100%完全相同?

更好的是,有一个Helper.writeMimeToBytes(mimeMessage)可以同时在两者上运行并比较字节。 writeTo方法不会写入标头,因此无法通过。我需要一些东西,我可以从每个系统中写出MimeMessage并进行比较,然后再挖掘差异。

他们真的应该有一个MimeMessage,它是equals()方法起作用的数据,因为它也更适合测试和模拟。

更正:我看错了文档。这句话“将消息输出为RFC 822格式的流,而没有指定的标头”使我明白了,实际上意味着它以空数组形式传递,但事实证明,比尔·香农(Bill Shannon)在他的回答中指出,多部分字节将始终是不同的,以下是仍然是一个问题。该死的MimeMessage。

谢谢, 院长

1 个答案:

答案 0 :(得分:0)

MimeMessage.writeTo绝对会写入标头。

如果两个独立构造且非平凡的MIME消息逐字节相同,我会感到震惊。至少,Message-Id应该与多部分边界字符串相同。

相关问题