有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java查找电子邮件附件的字节偏移量

我需要将电子邮件发送到需要读取附件的旧系统

对于多部分电子邮件中的每个部分,我需要提供电子邮件中附件开始位置的字节偏移量,因此传统系统不需要知道如何解析电子邮件

性能和内存使用是一个问题,因此解决方案无法将整个电子邮件加载到内存中。在我看来,javax已经不存在了。邮寄

您将如何使用Java进行此操作

我的第一个想法是使用mime4j,但该库不保留字节偏移量,甚至不保留行号。 我研究了对mime4j进行PR以添加对行号和字节偏移量的跟踪。但这并不容易,因为它是一个非常成熟的项目,并且在内部使用了大量缓冲

现在我在想,也许我走错了方向。因此,我非常感谢任何关于如何在一个简单的问题上解决这个问题的想法


共 (1) 个答案

  1. # 1 楼答案

    在发送字节偏移量和完整电子邮件时,您将遇到问题,因为电子邮件仍然可以采用base64编码或打印可引用编码

    您需要使用MimeStreamParser并给出自己的ContentHandler并重写body方法。然后可以直接将BodyDescriptor和InputStream发送到遗留系统。输入流是“解码”的电子邮件(即处理任何Content-Transfer-Encoding)。BodyDescriptor对于从您可能关心的部件的标题中提取内容非常有用(MimeType和Charset是最有用的)

    这不会缓冲整个电子邮件,并允许您仅输出身体部分。我不确定您是如何与遗留系统通信的(通过网络或它是否是进程内子组件),但希望它能工作